Java では、この例外をスローする可能性のあるメソッドを処理するときに、InterruptedException を処理することが重要です。この割り込みを処理するための 2 つの一般的なアプローチは次のとおりです。
try { // ... } catch (InterruptedException e) { Thread.currentThread().interrupt(); }
このアプローチは、InterruptedException がメソッドの有効な結果を表し、次のオブジェクトに伝播する必要がある場合に適しています。電話をかけてきた人。たとえば、メソッドが InterruptedException をスローするブロッキング ネットワーク呼び出しを実行する場合、この例外を伝播させ、操作が中断されたことを示すことが合理的です。
try { //... } catch (InterruptedException e) { Thread.currentThread().interrupt(); throw new RuntimeException(e); }
このアプローチは、中断が発生した場合にメソッドが有効な結果を生成できず、終了する必要がある場合に推奨されます。中断フラグ (Thread.currentThread().interrupt()) を設定すると、スレッドが中断されたままになり、呼び出し元に中断が通知されます。
適切なアプローチアプローチは状況によって異なります:
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 サイトの他の関連記事を参照してください。