Quasar光纤中的阻塞IO会阻塞其线程池中的线程吗?

cfc*_*hou 5 java fibers actor akka quasar

据我所知,在Akka,所有演员都安排在一个线程池中.太多的actor同时执行阻塞IO,每个阻塞调用阻塞一个线程,导致线程中断.

现在我在JVM上看一个有趣的光纤实现 - Quasar允许大量用户线程 - 光纤 - 并使用线程池来安排它们.但是,我想知道当许多光纤称为传统阻塞API时是否有好处.

我不认为它会有所帮助,因为阻塞API仍然会阻塞系统线程,而Quasar无法神奇地将其转换为仅阻挡光纤.这只是我的猜测,如果我错了,请纠正我.

cir*_*ter 7

类星体光纤实现为创建和调度的延续任务(默认情况下,但如果您愿意,这可以自定义,也可以自定义)ForkJoinPool.

你没错,Quasar不会"神奇地"将JDK/JVM线程转换为光纤,所以目前线程阻塞调用会阻塞线程池中的线程(Quasar会在发生这种情况时打印警告).如果它发生的时间很短并且很少发生,这不是一个大问题,否则最好对它采取一些措施.

如果你很幸运,这很可能并且越来越有可能,有人已经为你的线程阻塞API编写了一个集成模块,并提供了一个光纤阻塞实现.如果是这种情况,那么您只需要对代码进行微小的更改(如果有的话),以便从低效的线程阻塞切换到高效的光纤阻塞.

否则,你可以建立自己的运气并自己编写集成,这通常 容易.如果您这样做,请考虑将其集成回Comsat.