Beenden eines Threads ohne Verwendung von stop()
Bei der Multithread-Programmierung kann es notwendig werden, einen Thread zu beenden. Obwohl die Methode stop() eine abrupte Lösung bietet, wird von ihrer Verwendung aufgrund möglicher Ressourcenlecks abgeraten. In diesem Artikel wird eine alternative Methode zur Thread-Beendigung untersucht: Interrupt.
Interrupt verwenden
Die Interrupt-Methode signalisiert einem Thread, seine Ausführung ordnungsgemäß zu beenden. Beim Aufruf überprüft der Thread seinen Unterbrechungsstatus und löst eine InterruptedException aus, wenn dieser Wert wahr ist. Diese Ausnahme kann innerhalb der Ausführungsmethode des Threads abgefangen und behandelt werden, sodass dieser Ressourcen bereinigen und ordnungsgemäß beenden kann.
Hier ist ein Beispiel für die Verwendung von Interrupt:
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(); } }
Überlegungen
Gepostet Code
Der veröffentlichte Code weist mehrere Probleme auf:
In Fazit: Die Verwendung von Interrupt bietet einen kontrollierteren Ansatz zur Thread-Beendigung und stellt sicher, dass die Ressourcen ordnungsgemäß bereinigt werden. Es erfordert jedoch die Mitarbeit des Threads, der gestoppt wird.
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!