InterruptedException の処理: 伝播と丁寧な中断
Java スレッドを使用する場合、スレッドが待機中にスレッドが中断されると、InterruptedException が発生することがあります。操作を完了します。この例外を処理するには、次の 2 つの一般的なアプローチがあります。
1.伝播:
try { // ... } catch (InterruptedException e) { Thread.currentThread().interrupt(); }
伝播シナリオ: 中断された操作がメソッドの機能にとって不可欠である場合、このアプローチを使用します。 InterruptedException を伝播することにより、呼び出し元のコードは操作が中断されたことを通知され、それを処理する方法を決定できます。
2.中断とログ:
try { // ... } catch (InterruptedException e) { Thread.currentThread().interrupt(); // set interrupt flag System.out.println("Failed to compute sum"); }
丁寧な中断シナリオ: 中断された操作がメソッドの結果にとって重要ではない場合、このアプローチを使用します。割り込みフラグを設定することにより、呼び出しコードは割り込みが発生したかどうかを判断し、適切なアクション (ログ記録など) を実行できます。
最適なアプローチの決定
最適なアプローチは、特定の状況によって異なります。
例外の再スローを回避する
単純に再スローするInterruptedException は、中断の根本原因を不明瞭にするため、問題となる可能性があります。代わりに、常に例外を丁寧に処理し、中断を記録してください。
以上がJava スレッドで InterruptedException を伝播するか丁寧に処理する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。