在scala中运行期货的最有效方法是什么?

时间:2013-06-04 12:04:43

标签: scala concurrency akka

目前我们使用:

val simpleOps: ExecutionContext = Akka.system(app).dispatchers.lookup("akka.actor.simple-ops")

然后,当我们创造和构建我们的未来时,我们会隐含地导入这一点。除此之外,我们目前不使用Akka。

有更简单的方法来获取ExecutionContext,但我不确定它是否会运行Java Fork / Join Pool,这比常规的Java ExecutorService更高效。

Akka是获得FJP驱动的ExecutionContext的唯一途径吗? 有没有其他方法可以获得与Akka FJP MessageDispatcher一样高效的ExecutionContext?

1 个答案:

答案 0 :(得分:4)

Scala期货已经使用了ForkJoinPool(具体来说,他们使用java的ForkJoinPool的scala特定分支)。

请参阅https://github.com/scala/scala/blob/v2.10.1/src/library/scala/concurrent/impl/ExecutionContextImpl.scala#L1

特别注意DefaultThreadFactory扩展ForkJoinPool.ForkJoinWorkerThreadFactory

class DefaultThreadFactory(daemonic: Boolean) extends ThreadFactory with ForkJoinPool.ForkJoinWorkerThreadFactory