3

我想知道是否有任何ListenableFuture类似的工具,allAsList但如果你调用get(50, TimeUnit.Milliseconds)返回所有已经完成的。

4

1 回答 1

0

不,但将来可能会有,因为我认为答案就在那里,正如在这个相关问题中所讨论的那样: ListenableFuture, FutureCallback and timeouts

基本上,您可以在所有期货上添加一个带有超时的回调,而不是使用一种特殊的 Futures#allAsList(),并在它们上使用 Futures#successfulAsList()。因此,每个超时的未来都会因 TimeoutException 而失败,Futures#successfulAsList() 将仅返回成功的未来,即不会因任何类型的异常(包括 TimeoutException)而失败的未来。

不幸的是,这还没有在 guava 中实现(参见第一个链接到 guava 的跟踪器问题),但至少已被接受为有效请求。

于 2014-01-16T17:39:32.517 回答