Zunächst möchte ich Ihnen sagen, dass die im Internet genannten 5 Zustände irreführend sind. Threads in Java haben tatsächlich 6 Zustände. Der Begriff „5 Zustände“ bezeichnet eigentlich den Zustand des frühen Prozesses.
Früher Prozessstatus:
Der sogenannte „ProzessStatus“ bezieht sich hier auf den frühen „Single-ThreadedProzess“-Status.
Für den mittlerweile üblichen „Multithread-Prozess“ ist es offensichtlich sinnlos, über „Prozessstatus“ zu sprechen. Wir sollten über „den Status eines Threads unter dem Prozess“ oder direkt sprechen. Thread-Status". Manchmal werden jedoch „Prozessstatus“ und „Threadstatus“ immer noch verwechselt.
Einige Systeme nennen Threads „Light-Weight-Prozesse“, wir sprechen also immer noch vom „Prozessstatus“.
Manchmal werden sie nicht einmal „Prozess“ oder „Thread“ genannt, sondern „Aufgabe“ oder „Job“.
Unterschiede zum herkömmlichen Ausführungsstatus
Manche Leute denken oft, dass der Ausführungsstatus im Java-Thread-Status fehlt. Dies führt tatsächlich zu einer Verwechslung zweier verschiedener Statusebenen. . Für den Java-Thread-Status gibt es keinen sogenannten Ausführungsstatus, und sein ausführbarer Status umfasst den Ausführungsstatus.
Wir fragen uns vielleicht, warum es in der JVM keinen Unterschied zwischen diesen beiden Zuständen gibt?
Die aktuelle Time-Sharing (Time-Sharing) Multi-Task (Multi-Task) Betriebssystemarchitektur verwendet in der Regel die sogenannte „Zeit“. Die Methode „Slicing (Zeitquantum oder Zeitscheibe)“ wird verwendet, um eine präventive (präemptive) Round-Robin-Planung (Round-Robin-Stil) durchzuführen.
Diese Zeitspanne ist normalerweise nur für höchstens 10-20 ms auf der CPU ausgeführt (er befindet sich im laufenden Zustand), was nur etwa 0,01 Sekunden entspricht Wenn eine Zeitscheibe verwendet wird, wird sie heruntergeschaltet und am Ende der Planungswarteschlange platziert, um auf eine erneute Planung zu warten. (Das heißt, in den Bereitschaftszustand zurückkehren)
Normalerweise dient der Thread-Status von Java der Überwachung. Wenn der Thread so schnell wechselt, macht es wenig Sinn, zwischen „Bereit“ und „Laufen“ zu unterscheiden.
Heutige Mainstream-JVM-Implementierungen ordnen Java-Threads nacheinander den zugrunde liegenden Threads des Betriebssystems zu und überlassen die Planung dem Betriebssystem. Der Zustand, den wir auf der Ebene der virtuellen Maschine sehen, ist im Wesentlichen eine Zuordnung des zugrunde liegenden Threads Zustand und Verpackung. Die JVM selbst führt keine wesentliche Planung durch und es macht wenig Sinn, die zugrunde liegenden Bereitschafts- und Ausführungszustände abzubilden. Daher ist es eine gute Wahl, sie in ausführbare Zustände zu vereinheitlichen.
Das Folgende sind die Wörter in den Kommentaren im Thread.State-Quellcode:
Diese Zustände sind Zustände virtueller Maschinen, die nicht widerspiegeln alle Betriebssystem-Thread-Status.
Diese Zustände sind Virtual-Machine-Zustände, die keine Betriebssystem-Thread-Zustände widerspiegeln.
Hinweise zum RUNABLE-Status:
Ein Thread im ausführbaren Status wird in der Java Virtual Machine ausgeführt, er wartet jedoch möglicherweise auf andere Ressourcen vom Betriebssystem, z. B Prozessor.
Ein Thread im ausführbaren Zustand wird in der Java Virtual Machine ausgeführt, aber er wartet möglicherweise auf andere Ressourcen vom Betriebssystem, wie z. B. den Prozessor.
Der Status „RUNNABLE“ in Java umfasst tatsächlich die Status „Ready“ und „Running“, sodass Sie die ungenauen Aussagen im Internet völlig ignorieren können. Die Antwort auf solche Fragen finden Sie häufig im Quellcode und in Javadoc.
Status unter 6:
NEW (neu)
RUNNABLE (ausführbar)
BLOCKED (blockiert)
WAITING (unendliches Warten)
TIMED_WAITING (zeitlich begrenztes Warten)
BEENDET(Beendigung)
Verwandte Artikel:
Java-Instanz – Thread-Status abrufen
Teilen mehrerer Status im Java-Thread
Das obige ist der detaillierte Inhalt vonWussten Sie? Threads in Java haben tatsächlich 6 Zustände. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!