Kann mir den Unterschied zwischen mir bitte jemand erklären Sleeping
, Wait
, Park
, und Monitor
Thread - Zustände in VisualVM.
Folgendes habe ich gefunden:
Running
: Thread läuft noch.
Sleeping
: Thread schläft (Methode yield () wurde für das Thread-Objekt aufgerufen)
Wait
: Thread wurde durch einen Mutex oder eine Barriere blockiert und wartet darauf, dass ein anderer Thread die Sperre
Park
aufhebt: Geparkte Threads werden ausgesetzt, bis sie eine Genehmigung erhalten. Das Entparken eines Threads erfolgt normalerweise durch Aufrufen der Methode unpark () für das Thread-Objekt
Monitor
: Threads warten auf eine Bedingung, um wahr zu werden und die Ausführung fortzusetzen
Was ich nicht verstehen kann, ist der State Park, was setzt den Thread tatsächlich aus? Wie erkenne ich im Code, warum der Thread seine Ausführung ausgesetzt hat?
Kann mich bitte jemand in dieser Hinsicht führen.
Vielen Dank.
VisualVM ordnet den Java-Thread-Status (wie in der Antwort von @ Maciej beschrieben) dem Status in seiner Benutzeroberfläche wie folgt zu:
Sleeping
undPark
sind spezielle Fälle von (zeitgesteuertem) Warten:(Das Mapping wird in durchgeführt
ThreadMXBeanDataManager.java
.)Eine kurze (und nicht autorisierende) Diskussion des Java-Thread-Status finden Sie hier .
BEARBEITET ZUM HINZUFÜGEN:
Es ist auch erwähnenswert, dass Threads, die bei Aufrufen nativer Methoden blockieren, in der JVM als angezeigt
RUNNABLE
werden und daher von VisualVM alsRunning
(und als 100% CPU verbrauchend) gemeldet werden .quelle