Używam visualVM podłączam wielowątkową aplikację Java, wątek ma status 4, a mianowicie działa, śpi, czekaj, monitor. Co oznacza ten stan monitorowania? Jaka jest różnica między czekaniem a monitorem?
java
multithreading
jvm
user84592
źródło
źródło
sleeping
iwaiting
pokazanymi na zrzucie ekranu ?!To nie jest stan „monitorowania” ... Wskazuje, że wątek jest w
Thread.State.BLOCKED
stanie. Widzę, że jest inna dobra odpowiedź, po prostu wskażę ten link, aby uzyskać głębsze wyjaśnienieźródło
Monitor oznacza, że wątek oczekuje na osiągnięcie blokady obiektu. Na przykład, gdy jeden wątek uruchamia metodę zsynchronizowaną, a inny próbuje wywołać ją na tym samym obiekcie, nie będzie mógł tego zrobić, dopóki pierwsze wywołanie metody nie zostanie zakończone. Dzieje się tak, ponieważ pierwszy wątek ma monitor lub blokadę tego obiektu, więc drugi musi poczekać, aż zostanie zwolniony.
Z samouczków Oracle Threading :
źródło