你可以像这样链接运行块CompletableFuture
:
CompletableFuture
.supplyAsync(block1)
.thenApply(block2)
.thenApply(block3)...
我的函数返回一个CompletableFuture
带有 2 个块的函数,因此用户可以根据需要继续链接更多。
public CompletableFuture foo() {
return CompletableFuture
.supplyAsync(block1).
.thenApply(block2);
}
用户可以这样使用:
foo().thenApply(block3).join();
我想.exceptionaly()
在我的方法中添加处理程序(所以用户看不到它),但是如果我的任何块失败,它可能会破坏链和任何可能的用户链!换句话说 - 如果block1
或block2
失败,我不想继续任何可能的用户块(block3
),他可以链接到foo
.
CompletableFuture
额外的问题:在 Java 世界中还有比这更好的东西吗?