ThreadMXBean
ThreadMXBean (스레드 시스템 관리 인터페이스)
Java 가상 머신의 스레드 시스템을 관리하기 위한 관리 인터페이스예요. 플랫폼 스레드의 모니터링과 관리를 지원해요.
본문
ThreadMXBean은 플랫폼 스레드(platform thread)의 모니터링·관리를 지원해요. 플랫폼 스레드는 보통 운영체제가 스케줄링하는 커널 스레드에 매핑돼요. 가상 스레드(virtual thread)는 지원하지 않아요.
Java 가상 머신은 이 인터페이스의 구현 클래스 인스턴스를 단 하나만 가져요. 이 인스턴스는 MXBean으로 ManagementFactory.getThreadMXBean() 호출 또는 플랫폼 MBeanServer를 통해 얻을 수 있어요. MBeanServer 안에서 스레드 시스템 MXBean을 유일하게 식별하는 ObjectName은 다음과 같아요:
java.lang:type=Threading
스레드 ID — 스레드의 threadId() 메서드가 반환하는 양수 long 값이에요. 스레드 수명 동안 유일하며, 스레드가 종료되면 재사용될 수 있어요.
스레드 CPU 시간 — JVM 구현에 따라 현재 플랫폼 스레드의 CPU 시간 측정, 임의 플랫폼 스레드의 측정, 또는 아무것도 측정하지 않는 경우가 있어요. isThreadCpuTimeSupported()로 지원 여부를, isThreadCpuTimeEnabled()/setThreadCpuTimeEnabled(boolean)으로 활성 여부를 확인·제어할 수 있어요. CPU 시간은 나노초 정밀도를 갖지만 정확도가 보장되진 않아요. 일부 구현에서 스레드 CPU 시간 측정 활성화는 비용이 클 수 있어요.
스레드 경합 모니터링 — 일부 JVM은 스레드 경합 모니터링을 지원해요. 활성화되면 스레드가 동기화를 위해 블록되거나 알림을 기다린 누적 경과 시간이 수집되어 ThreadInfo에 담겨요. 기본은 비활성화돼 있고 setThreadContentionMonitoringEnabled(boolean)으로 켤 수 있어요.
동기화 정보와 교착 감지 — getThreadInfo(long[], boolean, boolean)와 dumpAllThreads(boolean, boolean)로 스레드 스택 트레이스와 동기화 정보를 얻을 수 있고, findMonitorDeadlockedThreads()와 findDeadlockedThreads()로 실행 중인 애플리케이션의 교착(deadlock) 상태를 찾을 수 있어요. Java 1.5부터 제공돼요.