在 java 中,我有一个可以返回结果或 null 的期货列表。 如何等待第一个完成的那个,如果它返回一个结果则忽略其余的但如果它返回 null 等待另一个完成?
为列表中的每个未来添加完成处理程序以完成辅助未来:
List<CompletableFuture<String>> futures = ...
var firstNonNull = new CompletableFuture<String>();
futures.forEach(future -> future.whenComplete( (value, failure) -> {
if (value != null) {
firstNonNull.complete(value);
}
}));
firstNonNull.whenComplete(...)
现在
firstNonNull
一旦futures
中的第一个未来以非null
值完成。