什么是未来<void>?

what is Future<void>?

我有以下代码片段。

import io.vertx.core.Future;
public void start(Future<void> fut){

  /*
  some code
  */
  fut.complete()
}


为什么这里使用 Future

Future<Void> 是执行的未来结果,returns 没有价值。

这通常是调用 Runnablerun 方法的结果。

正常的 void 调用看起来像(参见 r.run()):

Runnable r = () -> System.out.println("running");
r.run();

当这样的调用异步完成时,例如通过执行程序服务或可完成的未来,它变成了未来:

Future<Void> future = CompletableService.runAsync(r);

returns没有结果只是执行的未来。 "future" 包含有关执行的信息,即使它没有 "return" 值(例如 Future<Object> 会有的值)。

您可以获得有关异步执行的信息。它存储的一些信息示例:

boolean finished = future.isDone(); //Check if the async execution has completed
future.get(10L, TimeUnit.SECONDS); //Wait for completion with timeout
future.cancel(true); //cancel the execution

java.lang.Voidvoid 的引用类型(未实例化的占位符)。因此,您可以像查看 Future<Object> 一样查看 Future<Void>,只需记住您对 void 不返回任何值的了解。

您可以在此处阅读有关这些类型的更多信息: