在出现异常的情况下组合两个 future 时返回至少一个 Completable Future

问题描述 投票:0回答:0
CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> {
     return "hello";
 });
CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> {
     return "world";
 });

我需要结合 2 个期货来获得

hello world
所以我正在做这样的事情

CompletableFuture<String> result = future1.thenCombine(future2, (s1, s2) -> s1 + s2);
result.join(); // this prints hello world

现在我的挑战是,如果上述期货中的任何一个异常失败,它应该至少返回部分响应。

如果

future1
失败那么输出应该是
hello

如果

future2
失败那么输出应该是
world

如果两者都成功那么输出应该是

hello world

我尝试使用

CompletableFuture.anyOf()
如果任何未来失败,它将在组合两个可完成的未来时至少返回一个可完成的未来。在现实世界中,考虑到
future1
future2
是 API 调用,我们如何判断哪个失败并动态返回响应。

multithreading java-8 completable-future
© www.soinside.com 2019 - 2024. All rights reserved.