VisualVM - Thread-Zustände
Kann jemand bitte erklären Sie mir den Unterschied zwischen Sleeping
Wait
Park
und Monitor
thread Staaten in VisualVM.
Dies ist, was ich gefunden habe:
Running
: thread läuft immer noch.
Sleeping
: thread schläft (Methode yield() aufgerufen wurde, auf das thread-Objekt)
Wait
: thread gesperrt wurde durch einen mutex oder eine Barriere, und warten, dass ein anderer thread die Sperre wieder freigeben
Park
: geparkt threads sind gesperrt, bis Sie eine Genehmigung. Unparking einem thread erfolgt in der Regel durch den Aufruf der Methode entparken von anrufen() auf dem thread-Objekt
Monitor
: threads warten auf eine Bedingung, die wahr werden können, um die Ausführung fortsetzen,
Was ich nicht verstehen kann, ist der state Park, was eigentlich unterbricht den thread? Wie erkenne ich im code was hat der thread auszusetzen Ihrer Ausführung?
Kann jemand bitte führe mich in dieser Hinsicht.
Dank.
InformationsquelleAutor der Frage Ali Shah Ahmed | 2014-12-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich verwendet habe google und die erste Seite, die kam war ein sehr schönes Diagramm, welches ziemlich genau beschreibt alles, was Sie brauchen/wollen es wissen. Nächsten Zeit Ihren Wert versuchen google für diese Art von Fragen.
1) Neue
Der thread ist im neuen Zustand, wenn Sie erstellen eine Instanz der Thread-Klasse, aber vor dem Aufruf der Methode start ().
2) Ausführbar
Ist der thread im Zustand runnable nach Aufruf der start () - Methode, aber der thread-scheduler nicht ausgewählt werden, um den Laufenden thread.
3) Ausgeführt
Den thread im Laufenden Zustand, wenn der thread-scheduler ausgewählt hat.
4) Timed waiting
Timed waiting ist ein thread-Zustand für ein thread wartet mit einer angegebenen Wartezeit. Ein thread ist in der zeitlich wartenden Zustand durch Aufruf einer der folgenden Methoden mit einer bestimmten positiven Wartezeit:
5) Nicht Ausführbar (Gesperrt)
Dies ist der Zustand, wenn der thread noch lebt, aber momentan nicht aktiv.
6) Beendet
Einem thread ist beendet oder Toten Zustand, wenn seine run() Methode beendet.
Ich hoffe, dies beantwortet deine Frage :).
Parken:
Threads geparkt wird oder ausgesetzt, wenn Sie mögen, rufen Sie es auf diese Weise, weil Sie nicht über eine Berechtigung zum ausführen. Sobald die Genehmigung erteilt ist, wird der thread unparked und ausführen.
Genehmigungen LockSupport sind im Zusammenhang mit threads (d.h. Aufenthaltserlaubnis gegeben ist, zu einem bestimmten Thema) und nicht akkumulieren (d.h. es kann nur eine Genehmigung pro thread, wenn der thread verbraucht die Genehmigung, es verschwindet).
InformationsquelleAutor der Antwort Maciej Cygan
VisualVM Karten der Java-thread-Zustand (wie beschrieben in @Maciej Antwort) an den Staat präsentiert sich in der Benutzeroberfläche wie folgt:
Sleeping
undPark
sind bestimmte Fälle des (befristeten) warten:(Die Zuordnung erfolgt in
ThreadMXBeanDataManager.java
.)Einer kurzen (und nicht-autoritative) Diskussion von Java-thread-Zustand gefunden werden kann hier.
BEARBEITET, UM HINZUFÜGEN:
Es ist auch erwähnenswert, dass threads blockiert beim Aufruf von nativen Methoden werden in der JVM als
RUNNABLE
sind und deswegen berichtet von VisualVM alsRunning
(und verbraucht 100% CPU).InformationsquelleAutor der Antwort Jeremy