我是Scala的新手,并尝试使用一些并行结构(特别是Future
)。
我发现有一个ExecutionContext
类型的隐式参数。 IMO,它与线程池的概念类似(并且可能更抽象)。我试图通过documentation来学习它,但我找不到任何关于它的清晰而详细的介绍。
有谁能解释一下Scala中的执行上下文究竟是什么?将执行上下文引入语言的目的是什么?
谢谢!
答案 0 :(得分:15)
基本思路非常简单:你有一个回调,它将在某个时刻被执行。它将在什么线程上执行?目前的一个?一个新的?一个来自游泳池?这是执行上下文的决定因素。默认值(ExecutionContext.global
)使用来自全局池的线程(根据您拥有的CPU核心数确定多个线程)。
在其他情况下,您可能希望使用不同的上下文。例如,Akka actor可以将其调度程序用作执行上下文。