概述
我遇到过
Java 8 CompletableFuture thenCompose方法的奇怪行为.我有两个测试,仅在执行顺序上有所不同.两个测试都模拟thenCompose中生成的CompletableFuture中的失败.
@Test
public void completedAfter() {
CompletableFuture future1 = new CompletableFuture<>();
CompletableFuture future2 = new CompletableFuture<>();
future1.thenCompose(x -> future2).whenComplete((r, e) -> System.out.println("After: " + e));
future1.complete("value");
future2.completeExceptionally(new RuntimeException());
}
@Test
public void completedBefore() {
CompletableFuture future1 = new CompletableFuture<>();
CompletableFuture future2 = new CompletableFuture<>();
future1.complete("value");
future2.completeExceptionally(new RuntimeException());
future1.thenCompose(x -> future2).whenComplete((r, e) -> System.out.println("Before: " +e));
}
输出是:
After: java.util.concurrent.CompletionException: java.lang.RuntimeException
Before: java.lang.RuntimeException
问题是,为什么在一个案例中包含在CompletionException中但在另一个案例中却没有包含异常?
更新:Here是相关的错误报告.它已被标记并解析为JDK中的错误.
最后
以上就是沉默小天鹅为你收集整理的java8 乱序_为什么Java 8 CompletableFuture thenCompose会根据完成顺序生成不同的异常?...的全部内容,希望文章能够帮你解决java8 乱序_为什么Java 8 CompletableFuture thenCompose会根据完成顺序生成不同的异常?...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复