我希望等待多个事件,并决定尝试用CompletableFuture实现这一点。
CompletableFuture a1 = new CompletableFuture();
CompletableFuture a2 = new CompletableFuture();
CompletableFuture a3 = new CompletableFuture();
CompletableFuture b = new CompletableFuture();
CompletableFuture subFuturesA= CompletableFuture.allOf(a1, a2, a3);
CompletableFuture andB = CompletableFuture.allOf(b, subFuturesA);
andB.handle((result, exception) -> { System.out.println("Test"); return result; });如果我完成所有的未来:
a1.complete(null);
a2.complete(null);
a3.complete(null);
b.complete(null);字符串测试是打印出来的。但是,如果在一个事件中出现错误并使用a1.completeExceptionally(new IllegalStateException());,则不会打印字符串。它还在等待其他人完成。如何组合completableFutures,使一个completeExceptionally触发句柄方法?
发布于 2022-07-14 05:45:55
根据文档,从allOf方法创建的CompleteableFuture将在
所有给定的CompletableFutures都完成了。
他们都必须完成一个组合完成,否则它将不会做它的工作,无论一个完全例外。
您可以为每个CompleteableFuture创建一个“特殊”的anyOf,然后将它们与一个anyOf组合起来。
https://stackoverflow.com/questions/72974365
复制相似问题