2011-09-26 4 views
6

正常にシャットダウンできないTomcatサーバーに問題があります。私は、shutdownコマンドを発行した後、私は、スレッドダンプをとっている、それは次のようになります。"pool"で始まるJavaスレッドは何ですか?

http://pastebin.com/7SW4wZN9

私はVMをシャットダウンすることはできません「容疑者」が一つであると考えているスレッド"pool-4-thread-1"と名付けられました。残りはデーモンスレッドまたは内部VMスレッドのいずれかです。このスレッドが何であるかを調べようとしているうちに、同様の名前のスレッドを作成する他のJavaプログラムがあることに気付きました(たとえば、JVisualVMはそのようなスレッドを作成します)。

他の人がこのスレッドの内容とその作成方法を知っているのだろうかと思います。

+0

"正常にshudtownできません"とはどういう意味ですか? – Bozho

+0

これは、shutdown.shを実行した後にVMが終了しないことを意味します。 OSレベルでkillシグナルが必要です。 – mavroprovato

答えて

12

これらのスレッドは、コード内で(直接または間接的にライブラリを介して)作成したExecutorServiceによって作成され、シャットダウンする必要があります(たとえば、ServletContextListenerなど)。

+0

うん、本当。 +1 .. – Bozho

+0

あなたは正しいです、私はExecutorServiceでテストクラスを作成し、この名前のスレッドが作成されました。どのように私ができるかに関する任意のアイデア...このExecutorServiceを狩り、それを殺す? – mavroprovato

+0

難しいのは、デフォルト名を使用しているからです。アプリの実行中にスタックトレースダンプを作成することができます。実際に作業しているうちの1人をキャッチすることができます。それはいくつかのクラス名を渡すべきです。どのようなライブラリを使用していますか?バックグラウンドスレッドで動作するものは何ですか? – Thilo

関連する問題