Scala的期货如何在多核中安排

时间:2014-09-10 01:38:16

标签: scala jvm future

Scala如何确定何时立即执行未来,在不同的CPU(核心)上,以及何时将其排队以使当前核心免费?或者,如果它使用完全不同的方法,请解释:Scala期货如何安排? (跨越CPU,跨线程,跨时间)

1 个答案:

答案 0 :(得分:1)

它将基于Future使用的ExecutionContext。 当将来运行任务或调用回调时,它使用上下文来决定策略。

请注意,在典型的Scala应用程序中,这些作为implicits传递,因此您可能无法始终看到它们。防爆。在播放

import scala.concurrent.ExecutionContext.Implicits.global

这通常用于引入默认上下文,实际上来自Akka。

您可以像这样指定自己的线程池:

  val ctx = ExecutionContext.fromExecutor(
  Executors.newFixedThreadPool(5))

并像这样使用它(或隐含的)

Future {do something}(ctx)

所以回答你的问题,线程策略就是你告诉它的东西(这通常是隐含的,你可以使用)