在 java 中,我有一个可以返回结果或 null 的 future 列表。 如何等待最先完成的一个,如果它返回一个结果,则忽略其余的,但如果它返回 null,则等待另一个完成?
最佳答案
向列表中的每个 future 添加完成处理程序以完成辅助 future:
List<CompletableFuture<String>> futures = ...
var firstNonNull = new CompletableFuture<String>();
futures.forEach(future -> future.whenComplete( (value, failure) -> {
if (value != null) {
firstNonNull.complete(value);
}
}));
firstNonNull.whenComplete(...)
现在,一旦 futures
中的第一个 future 以非 null
值完成,firstNonNull
就会完成。
关于java - 如何等待 future 列表得到满意的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75726651/