![](/img/trans.png)
[英]Does java ExecutorService.awaitTermination() block the main thread and wait?
[英]awaitTermination blocks main thread
我有以下代码:
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.execute(() -> {
while(true) {
System.out.println("Here");
}
});
executorService.shutdown();
try {
executorService.awaitTermination(5,TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Finished");
超时-5毫秒后,线程停止写消息“ Here”,主线程打印“ Finished”,但不会终止并毫无意义地等待。 这种行为的原因是什么?
您描述的行为与我的观察结果不符(在Windows上)。 对我来说,池线程永远不会停止写“ Here”。 主线程在中间某处写“ Finished”,但随后程序仅继续打印“ Here”。 主线程已终止。 但是线程池仍然存在。
关闭执行程序服务不会中断线程。 它只是不再接受新任务,并在线程完成时关闭线程。 但是您的任务永远不会完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.