繁体   English   中英

awaitTermination阻止主线程

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM