[英]Why does CompletableFuture.runAsync() not always submit to ForkJoinPool.commonPool()?
[英]Why CompletableFuture.runAsync is not executed?
我认为主线程必须在子线程之后结束。但是下面的代码显示了在打印“异步结束”之前完成的过程。原因是什么?有人可以解释吗?
import java.util.concurrent.CompletableFuture;
public class Test {
public static void main(String[] args) {
CompletableFuture.runAsync(() -> {
try {
System.out.println("async start");
Thread.sleep(3000);
System.out.println("async end");
} catch (InterruptedException e) {
e.printStackTrace();
}
});
System.out.println("main end");
}
}
它已执行,您只是在等待结果。
CompleteableFuture.runAsync()
的Javadoc说:
返回一个新的CompletableFuture,它由运行给定操作的
ForkJoinPool.commonPool()
运行的任务异步完成。
ForkJoinPool.commonPool()
的Javadoc说:
任何在程序终止之前依赖异步任务处理完成的程序都应在退出之前调用
commonPool().awaitQuiescence()
。
因此,调用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.