2011-11-09 13 views
1

と仮定してください。コンテナがシャットダウンしたときにスリープスレッドに何が起こりますか?

ウェブアプリケーションを実行するtomcatコンテナ。

tomcat shutdownコマンドを起動します。

私のケースでは、シャットダウンコマンドが実行された後もタスクスレッドが残っているため、tomcatコンテナはシャットダウンしません。

+0

コンテナが停止している場合、明らかにスレッドはもはや存在しません。 Javaスレッドは、そのJVMに耐えることができません。 –

+0

私のケースで何が起こっているのかは、スリープしているスレッドが私のTomcatコンテナを止めることができないということです。 –

+0

となります。私は次回より正確な質問を書こうとします。 –

答えて

2

私が気付いていないTomcatに魔法がない限り(おそらく)、スリープしているスレッドはデーモンスレッドではない可能性があります。 JVMのシャットダウンが開始されると(外部のHUP/INT/TERMシグナル、またはSystem.exitなど)、JVMはすべての非デーモンスレッドが正常に終了するまで待機します。スリープスレッドが正常にシャットダウンするように準備するか、作成時にdaemon=trueに設定する必要があります。

関連する問題