实例之间的Scala全局线程拉动行为

时间:2018-08-01 15:03:35

标签: multithreading scala java.util.concurrent

我不清楚scala.concurrent.ExecutionContext.Implicits.global

的行为

线程是在每个进程中拉全局的“单例”还是在范围内的实例本地?如果范围有限,如何避免线程的过度分配?

例如,在高度线程化的环境中,线程池对于所有这些实例都是全局的还是每个实例都是全局的?

人为的例子

MyClass.scala
import scala.concurrent.ExecutionContext.Implicits.global
class MyClass {
  ...
  ...
  Future {
     for( var x <- Range ){
        Future {new MyClass} // create a new instance recursively asyncly
     }
  }
  ...
  ...
}

1 个答案:

答案 0 :(得分:0)

这是每个进程的全局单例。

您可以通过查看源代码并确认它是在顶级对象中定义的对象来验证这一点,因此,用更经典的术语来说,这是“在单例中定义的惰性值”。

通过这种方式,您可以在ExecutionContext对象的注释中获得有关其属性的更多信息。