如何从一个期货列表中等待满意的结果?

问题描述 投票:0回答:1

在 java 中,我有一个可以返回结果或 null 的期货列表。 如何等待第一个完成的那个,如果它返回一个结果则忽略其余的但如果它返回 null 等待另一个完成?

java future completable-future
1个回答
0
投票

为列表中的每个未来添加完成处理程序以完成辅助未来:

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
值完成。

© www.soinside.com 2019 - 2024. All rights reserved.