【发布时间】:2021-11-01 04:05:27
【问题描述】:
我正在尝试在CompletableFuture 上致电cancel。
从文档看来:
如果尚未完成,则使用 CancellationException 完成此 CompletableFuture。尚未完成的依赖 CompletableFuture 也将异常完成,并由此 CancellationException 引发 CompletionException。
它应该异常地完成它们,这是我所期望的,但相反,它会抛出并立即 CancellationException。
这是一个示例代码
CompletableFuture<?> f = CompletableFuture.supplyAsync(() -> false);
f.cancel(true); // Line 7.
f.join();
有一个再现:https://www.mycompiler.io/view/2v1ME4u
Exception in thread "main" java.util.concurrent.CancellationException
at java.base/java.util.concurrent.CompletableFuture.cancel(CompletableFuture.java:2396)
at Main.main(Main.java:7)
第 7 行是 f.cancel(true); 行。
【问题讨论】:
-
希望您不要介意,我将您的示例代码简化为一个更简单的示例。
-
@AndyTurner 哈哈我很感激编辑应该有这个我自己 TBH 但可惜你打败了我:)
标签: java java-8 concurrency java.util.concurrent completable-future