什么是 Future<void>?

Sat*_*tre 5 java vert.x

我有以下代码片段。

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

  /*
  some code
  */
  fut.complete()
}
Run Code Online (Sandbox Code Playgroud)


为什么在这里使用Future

ern*_*t_k 8

Future<Void> 是不返回任何值的执行的未来结果。

这通常是调用 a 的run方法的结果Runnable

正常的 void 调用看起来像(请参阅 参考资料r.run()):

Runnable r = () -> System.out.println("running");
r.run();
Run Code Online (Sandbox Code Playgroud)

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

Future<Void> future = CompletableService.runAsync(r);
Run Code Online (Sandbox Code Playgroud)

这只是不返回结果的执行的未来。这个“未来”包含有关执行的信息,即使它没有“返回”值(例如会有什么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
Run Code Online (Sandbox Code Playgroud)

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

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