Heim >Java >javaLernprogramm >Wie kann ich einen Java-Thread sicher stoppen, ohne „Thread.stop()' zu verwenden?

Wie kann ich einen Java-Thread sicher stoppen, ohne „Thread.stop()' zu verwenden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-22 09:27:11840Durchsuche

How to Safely Stop a Java Thread Without Using `Thread.stop()`?

So beenden Sie einen Thread effektiv, ohne die veraltete Thread.stop()-Methode zu verwenden

Die Java-Thread-Klasse stellt die stop()-Methode bereit als Mittel zum Beenden eines Threads, ist jedoch veraltet und sollte nicht verwendet werden. Dieser Artikel stellt einen alternativen Ansatz zum Beenden eines Threads mithilfe der Interrupt-Methode vor.

Verwenden von Interrupt zum Stoppen eines Threads

Anstelle des direkten Aufrufs von stop(), was unsicher ist und zu Datenbeschädigungen führen kann, können wir Interrupt verwenden, um dem Thread zu signalisieren, dass er ordnungsgemäß beendet werden soll. So funktioniert es:

public class InterruptedExceptionExample {

    private static volatile boolean shutdown = false;

    public static void main(String[] args) {
        Thread thread = new Thread(() -> {
            while (!shutdown) {
                try {
                    System.out.println("Running...");
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                }
            }
        });

        thread.start();
        System.out.println("Press enter to quit");
        try {
            System.in.read();
        } catch (IOException e) {
            e.printStackTrace();
        }

        shutdown = true;
        thread.interrupt();
    }
}

In diesem Code:

  1. Wir erstellen einen Thread, der auf unbestimmte Zeit in einer Schleife läuft und alle 5 Sekunden „Running...“ ausgibt.
  2. Wir haben ein statisches boolesches Flag (Herunterfahren), das auf „false“ initialisiert ist und verwendet wird, um dem Thread ein Signal zu senden stop.
  3. Die run()-Methode des Threads überprüft regelmäßig das Shutdown-Flag. Wenn es auf „true“ gesetzt ist, verlässt der Thread die Schleife.
  4. Die main()-Methode erstellt den Thread, startet ihn und wartet dann auf Benutzereingaben, um das Shutdown-Flag auf „true“ zu setzen.
  5. Abschließend wird der Thread mithilfe von interrupt() ordnungsgemäß beendet.

Vorteile der Verwendung Unterbrechung:

Das Unterbrechen eines Threads bietet mehrere Vorteile gegenüber dem veralteten stop():

  • Anmutige Beendigung:Der unterbrochene Thread hat die Möglichkeit, ihn zu bereinigen Laden Sie alle Ressourcen auf oder führen Sie alle notwendigen Aufgaben aus, bevor Sie den Vorgang beenden.
  • Auslösung einer Ausnahme:Unterbrechung bewirkt, dass bestimmte Methoden wie Sleep() und Wait() InterruptedException-Ausnahmen auslösen. Gut geschriebene Threads können diese Ausnahmen abfangen, um die Unterbrechung zu behandeln.
  • Sicher und robust: Im Gegensatz zu stop(), das zu Datenbeschädigungen führen kann, ist Interrupt eine sicherere und zuverlässigere Möglichkeit zum Beenden ein Thread.

Das obige ist der detaillierte Inhalt vonWie kann ich einen Java-Thread sicher stoppen, ohne „Thread.stop()' zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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