使用Duration.Inf阻止等待实例,最佳做法是什么?

时间:2016-08-03 00:43:18

标签: scala concurrency java.util.concurrent

我们知道这段代码:

Await.result(someFuture, Duration.Inf)

如果我将有限值的持续时间设为3秒,一旦过期,则会抛出TimeOutException。

持续时间.Inf怎么样,我担心应用程序会挂起。使用Duration.Inf?

的最佳做法是什么?

1 个答案:

答案 0 :(得分:3)

  

使用Duration.Inf的最佳做法是什么?

最佳做法是不要阻止使用Await,并使用某种回调来异步处理Future,例如mapforeach,{ {1}},onSuccess等,具体取决于您的使用情况。

如果您因任何原因必须阻止使用onFailure(实际执行此操作的理由很少),您应该设置一个具有合理限制的有限Await。例如,如果您知道Duration通常需要5秒钟才能完成,可能会将超时设置为10秒。否则,如果someFuture未完成,则调用Await 的线程可以永久挂起。

使用Future可以带来任何好处,除非你希望应用程序无限期地挂起等待早该过期Duration.Inf,这样做绝对是至关重要的。但总的来说,让它崩溃比不回应更好。