什么是未来<void>?
what is Future<void>?
我有以下代码片段。
import io.vertx.core.Future;
public void start(Future<void> fut){
/*
some code
*/
fut.complete()
}
为什么这里使用 Future?
Future<Void>
是执行的未来结果,returns 没有价值。
这通常是调用 Runnable
的 run
方法的结果。
正常的 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.Void
是 void
的引用类型(未实例化的占位符)。因此,您可以像查看 Future<Object>
一样查看 Future<Void>
,只需记住您对 void
不返回任何值的了解。
您可以在此处阅读有关这些类型的更多信息:
我有以下代码片段。
import io.vertx.core.Future;
public void start(Future<void> fut){
/*
some code
*/
fut.complete()
}
为什么这里使用 Future?
Future<Void>
是执行的未来结果,returns 没有价值。
这通常是调用 Runnable
的 run
方法的结果。
正常的 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.Void
是 void
的引用类型(未实例化的占位符)。因此,您可以像查看 Future<Object>
一样查看 Future<Void>
,只需记住您对 void
不返回任何值的了解。
您可以在此处阅读有关这些类型的更多信息: