Heim > Java > javaLernprogramm > Wie sollten InterruptedExceptions in Java behandelt werden?

Wie sollten InterruptedExceptions in Java behandelt werden?

Barbara Streisand
Freigeben: 2024-12-30 03:34:23
Original
201 Leute haben es durchsucht

How Should InterruptedExceptions Be Handled in Java?

Umgang mit Unterbrechungen in Java: Zwei Ansätze und Best Practices

In Java ist der Umgang mit InterruptedException entscheidend, wenn es um Methoden geht, die diese Ausnahme auslösen können. Zwei gängige Ansätze zur Behandlung dieser Unterbrechung sind:

Weitergabe der Unterbrechung (erster Ansatz)

try {
 // ...
} catch (InterruptedException e) { 
   Thread.currentThread().interrupt(); 
}
Nach dem Login kopieren

Dieser Ansatz eignet sich, wenn die InterruptedException ein gültiges Ergebnis der Methode darstellt und an diese weitergegeben werden soll der Anrufer. Wenn eine Methode beispielsweise einen blockierenden Netzwerkaufruf ausführt, der eine InterruptedException auslöst, ist es sinnvoll, diese Ausnahme weitergeben zu lassen, um anzuzeigen, dass der Vorgang unterbrochen wurde.

Abfangen und Setzen des Interrupted Flag (zweiter Ansatz)

try {
 //...
} catch (InterruptedException e) {
   Thread.currentThread().interrupt();
   throw new RuntimeException(e);
}
Nach dem Login kopieren

Dieser Ansatz wird bevorzugt, wenn die Methode im Falle einer Unterbrechung kein gültiges Ergebnis liefern kann und abbrechen soll. Durch das Setzen des Unterbrechungsflags (Thread.currentThread().interrupt()) wird sichergestellt, dass der Thread unterbrochen bleibt und der Aufrufer über die Unterbrechung informiert wird.

Entscheidung des besten Ansatzes

Der geeignete Der Ansatz hängt von der Situation ab:

  • Propagieren der Ausnahme: Wenn es für die Methode sinnvoll ist Um eine Unterbrechung zu ermöglichen und kein normaler Rückgabewert erzeugt werden kann (z. B. blockierender Netzwerkaufruf), deklarieren Sie die Methode mit throws InterruptedException und lassen Sie die Ausnahme weiterlaufen.
  • Abfangen und Setzen des Interrupted Flag : Wenn die Methode den Vorgang nicht abschließen oder kein gültiges Ergebnis zurückgeben kann, fangen Sie die Ausnahme ab, setzen Sie das Unterbrechungsflag und lösen Sie eine Laufzeit aus Ausnahme.

Beispiel (zweiter Ansatz)

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");
     }
}
Nach dem Login kopieren

Hier kann die printSum-Methode ihren Vorgang bei einer Unterbrechung nicht abschließen, daher fängt sie die InterruptedException ab, setzt das Interrupt-Flag und druckt eine alternative Nachricht.

Das obige ist der detaillierte Inhalt vonWie sollten InterruptedExceptions in Java behandelt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage