Multithreading 实例之间Scala全局线程拉取的行为
我不清楚scala.concurrent.ExecutionContext.Implicits.global的行为 线程是为每个进程拉一个全局“单例”,还是在其作用域内的实例的本地?如果它是限定范围的,如何避免线程的过度分配 例如,在一个高度线程化的环境中,线程池对于所有这些实例是全局的还是每个实例都是全局的 做作的例子Multithreading 实例之间Scala全局线程拉取的行为,multithreading,scala,java.util.concurrent,Multithreading,Scala,Java.util.concurrent,我不清楚scala.concurrent.ExecutionContext.Implicits.global的行为 线程是为每个进程拉一个全局“单例”,还是在其作用域内的实例的本地?如果它是限定范围的,如何避免线程的过度分配 例如,在一个高度线程化的环境中,线程池对于所有这些实例是全局的还是每个实例都是全局的 做作的例子 MyClass.scala import scala.concurrent.ExecutionContext.Implicits.global class MyClass {
MyClass.scala
import scala.concurrent.ExecutionContext.Implicits.global
class MyClass {
...
...
Future {
for( var x <- Range ){
Future {new MyClass} // create a new instance recursively asyncly
}
}
...
...
}
MyClass.scala
导入scala.concurrent.ExecutionContext.Implicits.global
类MyClass{
...
...
未来{
对于(var x它是每个进程的全局单例
您可以通过查看源代码来验证这一点,并看到它是在顶级对象中定义的对象,因此用更经典的术语来说,就是“在单例中定义的惰性val”
顺便说一下,您可以在ExecutionContext对象的注释中获得有关其属性的更多信息