当容器关闭时睡眠线程会发生什么?

时间:2011-11-09 22:11:44

标签: java multithreading tomcat concurrency

假设

运行Web应用程序的tomcat容器。

触发tomcat shutdown命令。

在我的情况下,tomcat容器没有关闭,因为在关闭命令被触发后仍然存在任务线程。

1 个答案:

答案 0 :(得分:2)

除非Tomcat中存在我不知道(可能)的魔法,否则问题可能是你的睡眠线程不是守护线程。一旦启动JVM关闭(通过外部HUP / INT / TERM信号,或System.exit或其他任何方式),JVM将等待,直到所有非守护程序线程正常完成。您需要安排您的休眠线程有序关闭,或者在创建它们时设置daemon=true