Scala如何确定何时立即执行未来,在不同的CPU(核心)上,以及何时将其排队以使当前核心免费?或者,如果它使用完全不同的方法,请解释:Scala期货如何安排? (跨越CPU,跨线程,跨时间)
答案 0 :(得分:1)
它将基于Future使用的ExecutionContext。 当将来运行任务或调用回调时,它使用上下文来决定策略。
请注意,在典型的Scala应用程序中,这些作为implicits传递,因此您可能无法始终看到它们。防爆。在播放
import scala.concurrent.ExecutionContext.Implicits.global
这通常用于引入默认上下文,实际上来自Akka。
您可以像这样指定自己的线程池:
val ctx = ExecutionContext.fromExecutor(
Executors.newFixedThreadPool(5))
并像这样使用它(或隐含的)
Future {do something}(ctx)
所以回答你的问题,线程策略就是你告诉它的东西(这通常是隐含的,你可以使用)