我遇到了这个scala.concurrent.blocking方法,根据Scala文档,这是......
用于指定可能阻塞的代码段,允许当前的BlockContext调整运行时的行为.正确标记阻塞代码可以提高性能或避免死锁.
我有些疑惑:
scala.concurrent.ExecutionContext.Implicits.global执行上下文或用户创建的执行上下文?blocking {... 包装任何可执行文件会发生什么}?axe*_*l22 58
join构造相互等待时,会在fork/join池中生成新线程,并且还有更多工作要完成,可能会完成其中一个线程.或者,如果其中一个ForkJoinWorker线程正在执行除使用之外的阻塞的代码join,则它可以使用ManagedBlockers通知池.ExecutionContext工作线程执行的代码在某些情况下可能会阻塞,并且可以通过使用其他线程计算其他内容来解决此情况.执行上下文可能会也可能不会对此采取行动.在当前(2.10,2.11)实现中,blocking仅适用于默认的全局执行上下文.Await,或者你正在等待监视器的条件得到解决,这个条件可以通过其他任务解决/应该在相同的执行上下文上执行的未来 - 在所有这些情况下你应该使用blocking.编辑:
考虑一下Scala学习并发编程中的第4章.