バグが原因で、単純な/消耗可能なスレッドが継続したいスレッドでデッドロックされている長時間実行プロセスがあるため、別の方法では再現が難しい最終レポートを実行できます。
もちろん、将来の実行のためにバグを修正することは、適切な最終的な解決策です。もちろん、そのようなスレッドの強制的な割り込み/強制終了/停止は本質的に安全ではなく、他の予測できない不整合を引き起こす可能性があります。(私はすべての標準的な警告とその理由を熟知しています。)
それでも、唯一の代替手段はJVMプロセスを強制終了し、より長い手順を実行することであり、最終レポートの完成度が低下するため、面倒/非推奨/危険/危険/1回限りの手法がまさに私が望むものです試してみる。
JVM は Ubuntu 上の Sun の 1.6.0_16 64 ビットであり、消耗スレッドはオブジェクト モニターのロックを待機しています。
正確なスレッドに向けられた OS シグナルは、消耗スレッドで InterruptedException を作成できますか?
gdb でアタッチし、JVM データを直接改ざんしたり、JVM プロシージャを呼び出したりすると、消耗スレッドが保持するオブジェクト モニタを強制的に解放できますか?
Thread.interrupt()
別のスレッドからの aInterruptedException
は、ロック待機中のフレームからaを生成しますか? (少し努力すれば、実行中のシステムに任意の Beanshell スクリプトを挿入できます。)
Thread.stop()
JMXまたはその他のリモートインジェクションメソッドを介して非推奨を送信できますか?
どんなアイデアでも、「危険」であればあるほど良いのです! そして、あなたの提案が同様の状況での個人的な経験でうまくいったなら、最高です!