ThreadMXBean

ThreadMXBean (스레드 시스템 관리 인터페이스)

Java 가상 머신의 스레드 시스템을 관리하기 위한 관리 인터페이스예요. 플랫폼 스레드의 모니터링과 관리를 지원해요.

출처: Java API Reference

본문

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부터 제공돼요.

더 알아보기 (Learn more)

Java 공식 API