如何完成 CompletableFuture<Void>?

Posted

技术标签:

【中文标题】如何完成 CompletableFuture<Void>?【英文标题】:How to complete a CompletableFuture<Void>? 【发布时间】:2018-06-02 14:35:29 【问题描述】:

我想要一个仅表示完成的 CompletableFuture(例如,我没有返回值)。

我可以将 CompletableFuture 实例化为:

CompletableFuture<Void> future = new CompletableFuture<> ();

但是我应该在完整的方法中输入什么?比如我做不到

future.complete(new Void());

【问题讨论】:

【参考方案1】:

您已经注意到,您不能像这样实例化Void 对象。 既然你不关心未来的价值,你可以用null来完成它:

future.complete(null);

【讨论】:

谢谢,这行得通。但这是说根本没有办法实例化 Void 吗?如果你调用 future.get() 会发生什么?在这种情况下,我会得到一个 null 而不是我假设的 Void? @Xinchao 是的,你会得到一个null。并引用Void's javadoc:“Void 类是一个不可实例化的占位符类,用于保存对代表 Java 关键字 void 的 Class 对象的引用。”

以上是关于如何完成 CompletableFuture<Void>?的主要内容,如果未能解决你的问题,请参考以下文章

CompletableFuture 的完成处理程序在哪个线程中执行?

创建已经完成的 CompletableFuture<Void> 的正确方法是啥

如何取消 Java 8 可完成的未来?

CompletableFuture 已经完成但有异常

返回 CompletableFuture<Void> 还是 CompletableFuture<?>?

使用CompletableFuture.runAsync()来完成异步任务