ThreadPoolExecutorに問題があります。何時間もうまく動作しますが、(ランダムな時間に、時には2分または3時間後に)送信されたタスクの実行が停止し、プログラムがハングアップすることがあります。Java ThreadPoolExecutorはしばらくしてから作業を停止します
キューは満杯で、この時点ですべてのcorethreadがアクティブです。
これはどこから来たのか分かりません。特に、すべてのコアスレッドが常に働いている間に、3時間働くことがあるためです。
私に提案がある人がいれば、とても幸せです。
これはデッドロックです。スレッド間でどのようなコードが共有されていますか? Redneckデバッグ:デバッグモードでアプリケーションを実行し、ロックするまで待ち、デバッガに接続してjvmをサスペンドすると、すべてのスレッドがどのポイントにあるかを確認できます。 –
デッドロックの疑いがある場合は、すべてのスレッドのスタックトレースをダンプします。 Windowsでは、Control-Breakキーを押すことで実行されます。スレッドが同期しているものと待っているものを見てください。 –
必ずしもデッドロックである必要はありません。 – erickson