我偶然发现了scala.concurrent.blocking方法,根据Scala文档,这是.
用于指定一段可能阻塞的代码,允许当前BlockContext调整运行时的行为。正确标记阻塞代码可以提高性能或避免死锁。
我有些怀疑:
scala.concurrent.ExecutionContext.Implicits.global执行上下文或用户创建的执行上下文?blocking { . }包装任何可执行文件会发生什么?发布于 2013-10-30 12:23:16
join结构等待时,新线程将在此池中生成,并且还有更多的工作需要完成,这些工作可能会完成其中的一个线程。或者,如果其中一个ForkJoinWorker线程正在执行除使用join之外的阻塞代码,它可以使用S通知池。ExecutionContext实现的通知,即工作线程执行的代码在某些条件下可能处于阻塞状态,并且可以通过使用其他线程计算其他内容来解决此条件。执行上下文可能对此起作用,也可能不起作用。在当前的(2.10,2.11)实现中,blocking将只在默认的全局执行上下文中工作。Await完成,或者您正在等待监视器的条件被解决,那么在所有这些情况下,您都应该使用blocking来解决这个条件,而在所有这些情况下,这些任务/未来都应该在相同的执行上下文上执行。编辑:
考虑看看在Scala书中学习并发编程中的第4章。
https://stackoverflow.com/questions/19681389
复制相似问题