2

目前我们使用:

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?

4

1 回答 1

4

Scala futures 已经在底层使用了 ForkJoinPool(具体来说,它们使用 java 的 ForkJoinPool 的 scala 特定 fork)。

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
于 2013-06-04T13:11:15.757 回答