Thread-Lebenszyklus in Java – Thread-Zustände in Java

Verständnis des Thread-Lebenszyklus in Java und der Thread-Zustände ist sehr wichtig, wenn Sie mit Threads arbeiten und für eine Mehrprozessumgebung programmieren. Aus unserem letzten Tutorial wissen wir, dass wir eine Java-Thread-Klasse erstellen können, indem wir das Runnable-Interface implementieren oder die Thread-Klasse erweitern. Um jedoch einen Java-Thread zu starten, müssen wir zuerst das Thread-Objekt erstellen und die Methode start() aufrufen, um die Methode run() als Thread auszuführen.

Thread-Lebenszyklus in Java

Das folgende Diagramm zeigt die verschiedenen Zustände des Thread-Lebenszyklus in Java. Wir können einen Thread in Java erstellen und starten, aber wie sich die Thread-Zustände von Runnable über Running bis zu Blocked ändern, hängt von der Implementierung des Thread-Schedulers des Betriebssystems ab, und Java hat darauf keine volle Kontrolle.

Neu

Wenn wir ein neues Thread-Objekt mit dem new-Operator erstellen, ist der Thread-Zustand ein neuer Thread. Zu diesem Zeitpunkt ist der Thread nicht aktiv, sondern ein interner Zustand der Java-Programmierung.

Runnable

Wenn wir die Funktion start() auf dem Thread-Objekt aufrufen, wird sein Zustand zu Runnable geändert. Die Kontrolle wird an den Thread-Scheduler übergeben, um die Ausführung zu beenden. Ob dieser Thread sofort ausgeführt oder vor der Ausführung im Runnable-Thread-Pool gehalten werden soll, hängt von der Betriebssystemimplementierung des Thread-Schedulers ab.

Running

Wenn der Thread ausgeführt wird, wird sein Zustand zu Running geändert. Der Thread-Scheduler wählt einen Thread aus dem Runnable-Thread-Pool aus und ändert seinen Zustand in Running. Dann beginnt die CPU mit der Ausführung dieses Threads. Ein Thread kann je nach Zeitscheibung, Abschluss der run()-Methode des Threads oder dem Warten auf einige Ressourcen den Zustand zu Runnable, Dead oder Blocked from running ändern.

Blocked/Waiting

A thread can be waiting for other thread to finish using thread join or it can be waiting for some resources to available. For example producer consumer problem or waiter notifier implementation or IO resources, then it’s state is changed to Waiting. Once the thread wait state is over, it’s state is changed to Runnable and it’s moved back to runnable thread pool.

Dead

Nachdem der Thread die Ausführung abgeschlossen hat, wird sein Zustand auf „Dead“ geändert und er gilt als nicht mehr aktiv. Oben sind die verschiedenen Zustände des Threads. Es ist gut, sie zu kennen und zu verstehen, wie der Thread seinen Zustand ändert. Das ist alles zum Thread-Lebenszyklus in Java.

Source:
https://www.digitalocean.com/community/tutorials/thread-life-cycle-in-java-thread-states-in-java