當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。