So beenden Sie einen Thread, ohne stop() zu verwenden
Die Verwendung der stop()-Methode zum Beenden eines Threads kann zu unvorhersehbarem Verhalten führen. Dieser Artikel stellt einen alternativen Ansatz zur Thread-Beendigung mithilfe einer Unterbrechung vor.
Alternative zu stop()
Im Gegensatz zu stop() signalisiert eine Unterbrechung dem Thread, seine Ausführung ordnungsgemäß zu beenden. Die Unterbrechung wird durch die Methode Thread.interrupt() erreicht. Wenn ein Thread unterbrochen wird, wird eine InterruptedException ausgelöst.
Implementierungsbeispiel
Betrachten Sie den folgenden Code:
public class HelloWorld { public static void main(String[] args) throws Exception { Thread thread = new Thread(new Runnable() { public void run() { try { while (!Thread.currentThread().isInterrupted()) { Thread.sleep(5000); System.out.println("Hello World!"); } } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } }); thread.start(); System.out.println("press enter to quit"); System.in.read(); thread.interrupt(); } }
In diesem Beispiel Der Thread wird wie gewohnt erstellt und gestartet. Wenn der Benutzer die Eingabetaste drückt, unterbricht der Hauptthread den Arbeitsthread mithilfe von thread.interrupt(). Der Arbeitsthread behandelt die Unterbrechung, indem er eine InterruptedException auslöst und dann das Unterbrechungsflag löscht. Da der Thread innerhalb einer Schleife nach einer Unterbrechung sucht, beendet er seine Ausführung schließlich nach Abschluss der aktuellen Iteration.
Überlegungen
Das obige ist der detaillierte Inhalt vonWie kann ich einen Thread in Java sicher beenden, ohne „stop()' zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!