Scala com.twitter.util.Await不';t引发com.twitter.util.TimeoutException

Scala com.twitter.util.Await不';t引发com.twitter.util.TimeoutException,scala,finagle,twitter-util,Scala,Finagle,Twitter Util,我希望这段代码会引发TimeoutException,但它不会。我做错了什么 import com.twitter.conversions.time._ import com.twitter.util.{Await, Future} object Tmp { def main(args: Array[String]): Unit = { Await.result( Future{ Thread.sleep(10000000) },

我希望这段代码会引发TimeoutException,但它不会。我做错了什么

import com.twitter.conversions.time._
import com.twitter.util.{Await, Future}


object Tmp {

  def main(args: Array[String]): Unit = {
    Await.result(
      Future{
        Thread.sleep(10000000)
      },
        1 second
    )
  }
}
Future.apply
方法的注释说明:

在调用线程中执行一个
,因此必须小心使用阻塞代码

因此,一般来说,您不应该对期货执行阻塞操作

如果你想进行阻塞调用,你应该使用
com.twitter.util.FuturePool
。关于执行阻塞调用的更多背景信息,可以在Twitter Util文档的一节中找到

因此,您的代码可以如下所示:

import com.twitter.conversions.time._
import com.twitter.util.{Await, FuturePool}

object Tmp {
  def main(args: Array[String]): Unit = {
    Await.result(
      FuturePool.unboundedPool {
        Thread.sleep(5000)
      },
      1 second
    )
  }
}
在本例中,我使用了
unbounddpool
作为一个快速示例。但请检查以查找适合您用例的
FuturePool