Ich benutze VisualVM, um eine Java-Anwendung mit mehreren Threads zu verbinden. Der Thread hat den Status 4, nämlich Ausführen, Schlafen, Warten, Überwachen. Was bedeutet dieser Überwachungsstatus? Was ist der Unterschied zwischen Warten und Überwachen?
java
multithreading
jvm
user84592
quelle
quelle
sleeping
undwaiting
im Screenshot gezeigt ?!Dies ist kein "Überwachungsstatus". Dies zeigt an, dass sich der Thread im
Thread.State.BLOCKED
Status befindet. Ich sehe, dass es eine andere gute Antwort gibt. Ich werde Sie nur auf diesen Link verweisen, um eine tiefere Erklärung zu erhaltenquelle
Monitor bedeutet, dass der Thread darauf wartet, eine Sperre für ein Objekt zu erreichen. Wenn beispielsweise ein Thread eine synchronisierte Methode ausführt und ein anderer versucht, sie für dasselbe Objekt aufzurufen, kann dies erst nach Abschluss des ersten Aufrufs der Methode erfolgen. Dies liegt daran, dass der erste Thread einen Monitor oder eine Sperre für dieses Objekt hat, sodass der zweite warten muss, bis er freigegeben wird.
Aus Oracle Threading-Tutorials :
quelle