Heim >Java >javaLernprogramm >Wie stoppt man einen Thread in Java ordnungsgemäß?
So beenden Sie einen Thread in Java ordnungsgemäß
Beim Herunterfahren einer Java-Anwendung ist das effektive Beenden von Threads von entscheidender Bedeutung, um Ausnahmen zu vermeiden und die ordnungsgemäße Funktion sicherzustellen Ressourcenfreigabe. In diesem Zusammenhang sind zwei wichtige Aspekte zu berücksichtigen: Wie wird die Thread-Beendigung eingeleitet und wie wird der Beendigungsprozess sauber gehandhabt.
Um die Thread-Beendigung einzuleiten, sollte die Methode Thread.interrupt() anstelle von verwendet werden Veraltete stop()-Methode. Wenn interrupt() aufgerufen wird, löst es ein Flag im Ziel-Thread aus, das dazu führt, dass der Thread aus allen Ruhe-, Warte- oder Eingabe-/Ausgabevorgängen ausbricht.
Der Thread-Beendigungsprozess umfasst sowohl das Starten als auch das Starten und Stoppen von Threads. Im bereitgestellten Beispiel verwaltet die ServletContextListener-Klasse den Thread-Lebenszyklus: Sie startet einen Thread, wenn die Anwendung initialisiert wird, und stoppt den Thread, wenn die Anwendung heruntergefahren wird. Um die Beendigung sauber zu handhaben, muss die Ausführungsmethode des Threads regelmäßig auf Interrupt-Signale überprüft werden. Hier ist eine aktualisierte Version der IndexProcessor-Klasse, die diese Prüfung enthält:
public class IndexProcessor implements Runnable { private static final Logger LOGGER = LoggerFactory.getLogger(IndexProcessor.class); @Override public void run() { while (!Thread.currentThread().isInterrupted()) { try { LOGGER.debug("Sleeping..."); Thread.sleep((long) 15000); LOGGER.debug("Processing"); } catch (InterruptedException e) { LOGGER.error("Exception", e); Thread.currentThread().interrupt(); } } } }
Durch die regelmäßige Prüfung auf Interrupt-Signale kann der Thread die Beendigung ordnungsgemäß verarbeiten und die Ausnahme vermeiden, die im ursprünglichen Beispiel aufgetreten ist.
Zusammenfassend lässt sich sagen, dass die bevorzugte Methode zum Stoppen eines Threads in Java darin besteht, Thread.interrupt() zu verwenden und den Beendigungsprozess innerhalb der Ausführungsmethode des Threads abzuwickeln, indem regelmäßig nach Interrupt-Signalen gesucht wird. Dadurch wird sichergestellt, dass der Thread sauber und ohne Ausnahmen gestoppt werden kann, was ein ordnungsgemäßes Herunterfahren der Anwendung ermöglicht.
Das obige ist der detaillierte Inhalt vonWie stoppt man einen Thread in Java ordnungsgemäß?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!