Development Tip

Java JVM 프로파일 링, 스레드 상태- "모니터"상태는 무엇을 의미합니까?

yourdevel 2020. 10. 12. 08:16
반응형

Java JVM 프로파일 링, 스레드 상태- "모니터"상태는 무엇을 의미합니까?


여기에 이미지 설명 입력

VisualVM을 사용하여 다중 스레드 Java 응용 프로그램을 연결하고 스레드에는 실행 중, 잠자기, 대기, 모니터의 4 가지 상태가 있습니다. 이 모니터링 상태는 무엇을 의미합니까? 대기와 모니터의 차이점은 무엇입니까?


이러한 상태는 Thread.State열거 형에 언급 된 것과 동일합니다 . "기다림"은 문서에 나와있는 것처럼 다음을 의미합니다.

스레드는 다음 메소드 중 하나를 호출하여 대기 상태에 있습니다.

  • 제한 시간이없는 Object.wait
  • 시간 제한없이 Thread.join
  • LockSupport.park

"모니터"는 BLOCKED스레드가 객체에 대한 잠금을 얻기 위해 대기하는 synchronized상태입니다 (다른 스레드가 이미 연관된 잠금을 보유하고있는 동안 블록 또는 메소드 에 들어 가려고하기 때문입니다 ).


이것은 "모니터링"상태가 아닙니다. 스레드가 Thread.State.BLOCKED상태 에 있음을 나타냅니다 . 또 다른 좋은 답변 이 있습니다. 더 자세한 설명 위해이 링크 를 알려 드리겠습니다.


모니터는 스레드가 객체에 대한 잠금을 얻기 위해 기다리고 있음을 의미합니다. 예를 들어 한 스레드가 동기화 된 메서드를 실행하고 다른 스레드가 동일한 개체에서이를 호출하려고하면 메서드의 첫 번째 호출이 완료 될 때까지 사용할 수 없습니다. 첫 번째 스레드에는 해당 개체에 대한 모니터 또는 잠금이 있으므로 두 번째 스레드는 해제 될 때까지 기다려야하기 때문입니다.

에서 오라클 스레딩 자습서 :

"동기화는 고유 잠금 또는 모니터 잠금으로 알려진 내부 엔티티를 중심으로 구축됩니다. API 사양에서는 종종이 엔티티를 단순히"모니터 "라고합니다.) 고유 잠금은 동기화의 두 측면에서 역할을합니다. 객체의 상태와 가시성에 필수적인 관계를 구축하기 전에 발생합니다. "

참고 URL : https://stackoverflow.com/questions/6705400/java-jvm-profiling-thread-status-what-does-monitor-status-mean

반응형