2011-11-09 74 views
1

假設容器關閉時睡眠線程會發生什麼情況?

運行Web應用程序的tomcat容器。

激發一個tomcat關機命令。

在我的情況下,tomcat容器沒有關閉,因爲在關閉命令被觸發後仍有任務線程存在。

+0

如果容器停止,那麼線程顯然不再存在。 Java線程無法存活到其JVM。 –

+0

我的情況是,正在睡覺的線程不允許我的tomcat容器停下來。 –

+0

這是有道理的。下次我會嘗試寫出更精確的問題。 –

回答

2

除非Tomcat中有魔法,我不知道(可能),否則問題可能是您的睡眠線程不是守護線程。一旦啓動JVM關閉(通過外部HUP/INT/TERM信號或System.exit或任何其他方式),JVM將等待所有非守護線程正常完成。您需要安排睡眠線程按順序關機,或者在創建時設置daemon=true

相關問題