Scala com.twitter.util.Await不';t引发com.twitter.util.TimeoutException
我希望这段代码会引发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) },
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