用法 一
trait BlockContext
当线程即将阻塞时由scala.concurrent.blocking通知的上下文.实际上,此 trait 提供了 scala.concurrent.Await 的实现。 scala.concurrent.Await.result 和 scala.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
相关用法
- Scala concurrent.Future用法及代码示例
- Scala control.Breaks用法及代码示例
- Scala control.Exception用法及代码示例
- Scala control.NonFatal用法及代码示例
- Scala convert.ImplicitConversions用法及代码示例
- Scala control.ControlThrowable用法及代码示例
- Scala control.TailCalls用法及代码示例
- Scala compiletime.summonFrom用法及代码示例
- Scala collection.Iterator用法及代码示例
- Scala compiletime.error用法及代码示例
- Scala collection.IterableOnce用法及代码示例
- Scala compiletime.erasedValue用法及代码示例
- Scala compiletime.codeOf用法及代码示例
- Scala compiletime.uninitialized用法及代码示例
- Scala collection.JavaConverters用法及代码示例
- Scala compiletime.requireConst用法及代码示例
- Scala Tabulate.sliding用法及代码示例
- Scala ArrayBuffer.inits用法及代码示例
- Scala long.BitwiseOr用法及代码示例
- Scala StringBuilder.partitionMap用法及代码示例
- Scala List distinct()用法及代码示例
- Scala DefaultMap.sizeIs用法及代码示例
- Scala StrictOptimizedIterableOps.sliding用法及代码示例
- Scala Searching.SearchResult用法及代码示例
- Scala ::.collectFirst用法及代码示例
注:本文由纯净天空筛选整理自scala-lang.org大神的英文原创作品 concurrent.BlockContext。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。