我遇到了scala.concurrent.blocking
方法,根据Scala文档,这是......
用于指定可能阻止的代码片段 当前的BlockContext用于调整运行时的行为。正确 标记阻止代码可以提高性能或避免死锁。
我有些疑惑:
scala.concurrent.ExecutionContext.Implicits.global
执行上下文或用户创建的执行上下文?blocking {
... }
?答案 0 :(得分:54)
join
构造,还有更多工作要完成
这可能会完成其中一个主题。
或者,如果其中一个ForkJoinWorker
线程正在执行除使用join
之外的其他阻塞的代码,则它可以使用ManagedBlocker
s通知池。ExecutionContext
实现的通知,即工作线程执行的代码在某些情况下可能会阻塞,并且可能会解决此问题通过使用其他线程计算其他东西。执行上下文可能会也可能不会对此采取行动。在当前(2.10,2.11)实现中,blocking
仅适用于默认的全局执行上下文。Await
完成,或者您正在等待监视器的条件得到解决,并且这个条件可以通过应该在其上执行的其他任务/未来来解决执行上下文 - 在所有这些情况下,您应该使用blocking
。编辑: