2013-06-04 48 views
2

目前我们使用:在scala中运行期货的最有效方式是什么?

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

斯卡拉期货已经在引擎盖下使用了ForkJoinPool(具体来说,他们使用了java的ForkJoinPool的一个scala特定的分支)。

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

尤其注意到​​扩展ForkJoinPool.ForkJoinWorkerThreadFactory

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

酷,谢谢大家的效应初探。你是否仍然可以看到使用Akka调度员的任何一点? –

+1

如果你只是使用期货,那么可能不会 –

相关问题