gpt4 book ai didi

java - CompletableFuture 是否有 .thenCompose() 也异常执行?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:46:35 25 4
gpt4 key购买 nike

我想在另一个 CompletableFuture 完成后执行一个 CompletableFuture,无论第一个是否异常完成(.thenCompose()仅在执行正常完成时运行)。

例如:

CompletableFuture.supplyAsync(() -> 1L)
.whenComplete((v, e) -> CompletableFuture.runAsync(() -> {
try {
Thread.sleep(1000);
System.out.println("HERE");
} catch(InterruptedException exc) {
return;
}
}))
.whenComplete((v, e) -> System.out.println("ALL DONE"));

这打印

ALL DONE
HERE

我希望它是

HERE
ALL DONE

最好不要将第二个 whenComplete() 嵌套在第一个中。

注意这里我不关心返回的结果/异常。

最佳答案

诀窍是使用 .handle((r, e) -> r) 来抑制错误:

CompletableFuture.runAsync(() -> { throw new RuntimeException(); })
//Suppress error
.handle((r, e) -> r)
.thenCompose((r) ->
CompletableFuture.runAsync(() -> System.out.println("HELLO")));

关于java - CompletableFuture 是否有 .thenCompose() 也异常执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27576569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com