当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Scala concurrent.BlockContext用法及代码示例


用法 一

trait BlockContext

当线程即将阻塞时由scala.concurrent.blocking通知的上下文.实际上,此 trait 提供了 scala.concurrent.Await 的实现。 scala.concurrent.Await.resultscala.concurrent.Await.ready 通过首先查找通过 BlockContext.withBlockContext 提供的实例,然后检查 Thread.currentThread 是否是 BlockContext 的实例来定位 BlockContext 的实例。因此,线程池可以使其 java.lang.Thread 实例实现 BlockContext 。如果线程没有实现 BlockContext ,则使用默认的 BlockContext

通常,您需要链接到以前的 BlockContext ,如下所示:

val oldContext = BlockContext.current
val myContext = new BlockContext {
  override def blockOn[T](thunk: => T)(implicit permission: CanAwait): T = {
    // you'd have code here doing whatever you need to do
    // when the thread is about to block.
    // Then you'd chain to the previous context:
    oldContext.blockOn(thunk)
  }
}
BlockContext.withBlockContext(myContext) {
  // then this block runs with myContext as the handler
  // for scala.concurrent.blocking
}

伴生:

object

源码:

BlockContext.scala

用法 二

object BlockContext

伴生:

class

源码:

BlockContext.scala

相关用法


注:本文由纯净天空筛选整理自scala-lang.org大神的英文原创作品 concurrent.BlockContext。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。