ホームページ > Java > &#&チュートリアル > Java で InterruptedExceptions をどのように処理する必要がありますか?

Java で InterruptedExceptions をどのように処理する必要がありますか?

Barbara Streisand
リリース: 2024-12-30 03:34:23
オリジナル
188 人が閲覧しました

How Should InterruptedExceptions Be Handled in Java?

Java での割り込みの処理: 2 つのアプローチとベスト プラクティス

Java では、この例外をスローする可能性のあるメソッドを処理するときに、InterruptedException を処理することが重要です。この割り込みを処理するための 2 つの一般的なアプローチは次のとおりです。

割り込みの伝播 (最初のアプローチ)

try {
 // ...
} catch (InterruptedException e) { 
   Thread.currentThread().interrupt(); 
}
ログイン後にコピー

このアプローチは、InterruptedException がメソッドの有効な結果を表し、次のオブジェクトに伝播する必要がある場合に適しています。電話をかけてきた人。たとえば、メソッドが InterruptedException をスローするブロッキング ネットワーク呼び出しを実行する場合、この例外を伝播させ、操作が中断されたことを示すことが合理的です。

中断フラグのキャッチと設定 (2 番目のアプローチ)

try {
 //...
} catch (InterruptedException e) {
   Thread.currentThread().interrupt();
   throw new RuntimeException(e);
}
ログイン後にコピー

このアプローチは、中断が発生した場合にメソッドが有効な結果を生成できず、終了する必要がある場合に推奨されます。中断フラグ (Thread.currentThread().interrupt()) を設定すると、スレッドが中断されたままになり、呼び出し元に中断が通知されます。

最適なアプローチの決定

適切なアプローチアプローチは状況によって異なります:

  • 例外: メソッドで割り込みを許可することが理にかなっていて、通常の戻り値を生成できない場合 (ネットワーク呼び出しのブロックなど)、メソッドを throws InterruptedException で宣言し、例外を伝播させます。
  • 中断フラグのキャッチと設定: メソッドが操作を完了できない場合、または有効な結果を返せない場合は、例外をキャッチし、

例 (2 番目のアプローチ)

void printSum(Server server) {
     try {
         int sum = computeSum(server);
         System.out.println("Sum: " + sum);
     } catch (InterruptedException e) {
         Thread.currentThread().interrupt();  // set interrupt flag
         System.out.println("Failed to compute sum");
     }
}
ログイン後にコピー

ここでは、printSum メソッドは中断されると操作を完了できないため、InterruptedException をキャッチします。割り込みフラグを設定し、代替メッセージを出力します。

以上がJava で InterruptedExceptions をどのように処理する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート