JavaTM Platform
Standard Ed. 6

java.lang.management
인터페이스 ThreadMXBean



public interface ThreadMXBean

Java 가상 머신의 thread 시스템의 관리 인터페이스입니다.

Java 가상 머신은, 이 인터페이스의 구현 클래스의 단일 인스턴스를 가집니다. 이 인터페이스를 구현하고 있는 인스턴스는,ManagementFactory.getThreadMXBean() 메소드를 호출해 취득할 수 있다, 혹은 platform MBeanServer 메소드로부터 취득할 수 있는 MXBean 입니다.

MBeanServer 내에서 thread 시스템의 MXBean 를 일의에 식별하기 위한 ObjectName 는 이하대로입니다.

java.lang:type=Threading

thread ID

thread ID 는, thread의 Thread.getId() 메소드의 호출에 의해 반환된 정의 long 형의 값입니다. thread ID 는 일의이며, 그 수명을 통해서 변경될 것은 없습니다. thread가 종료하면(자), thread ID 는 재사용 가능합니다.

이 인터페이스의 일부의 메소드는, 입력 파라미터로서 thread ID 또는 thread ID 의 배열을 취득해 thread마다의 정보를 돌려줍니다.

thread CPU 시간

Java 가상 머신의 구현에서는, 임의의 thread나 thread 이외에 붙어, 현재의 thread의 CPU 시간의 측정을 지원할 수 있습니다.

isThreadCpuTimeSupported() 메소드를 사용하면(자), Java 가상 머신으로 임의의 thread의 CPU 시간을 측정할 수 있을지 어떨지를 판정할 수 있습니다. isCurrentThreadCpuTimeSupported() 메소드를 사용하면(자), Java 가상 머신이 현재의 thread의 CPU 시간의 측정을 지원하고 있을지 어떨지를 판정할 수 있습니다. 임의의 thread의 CPU 시간 측정을 지원하는 Java 가상 머신의 구현은 현재의 thread의 CPU 시간 측정도 지원합니다.

이 인터페이스로 제공된 CPU 시간은, 나노초단위의 정밀도를 제공합니다만, 반드시 나노초의 정확도가 아닙니다.

Java 가상 머신에서는, 디폴트로 CPU 시간의 측정을 무효로 할 수 있습니다. isThreadCpuTimeEnabled() 메소드와 setThreadCpuTimeEnabled(boolean) 메소드를 사용해, CPU 시간 측정이 유효하게 되어 있는 것을 테스트하거나 측정의 지원를 유효 또는 무효로 하거나 할 수가 있습니다. thread CPU 측정을 유효하게 하면(자), 일부의 Java 가상 머신의 구현에서는, 부하가 커질 가능성이 있습니다.

thread 컨텐션 감시

일부의 Java 가상 머신은, thread 컨텐션 감시를 지원합니다. thread 컨텐션 감시가 유효한 경우, thread가 동기를 블록 했는지 통지를 대기하고 있던 누적 경과시간이 수집되어ThreadInfo 객체로 돌려주어집니다.

isThreadContentionMonitoringSupported() 메소드를 사용해, Java 가상 머신이 thread 컨텐션 감시를 지원하고 있을지 어떨지를 판정할 수 있습니다. thread 컨텐션 감시는 디폴트로 무효입니다. setThreadContentionMonitoringEnabled(boolean) 메소드를 사용해, thread 컨텐션 감시를 유효하게 할 수가 있습니다.

동기 정보와 데드락 검출

일부의 Java 가상 머신은,object monitor usageownable synchronizer usage 의 감시를 지원하고 있는 경우가 있습니다. getThreadInfo(long[], boolean, boolean) 메소드와 dumpAllThreads(boolean, boolean) 메소드를 사용하면(자), thread 스택 트레이스 및 동기 정보 (thread가 취득을 블록 되고 있는 또는 대기하고 있는 lock 에 대해, thread가 현재 소유하고 있는 락에 대하는 것)를 취득할 수 있습니다.

ThreadMXBean 인터페이스는, 실행중 어플리케이션의 데드락을 찾아내기 위한 findMonitorDeadlockedThreads() 메소드 및 findDeadlockedThreads() 메소드를 제공합니다.

도입된 버젼:
1.5
관련 항목:
JMX 스펙. , MXBean 에 액세스 하는 방법

메소드의 개요
 ThreadInfo [] dumpAllThreads (boolean lockedMonitors, boolean lockedSynchronizers)
          스택 트레이스 및 동기 정보를 가지는 모든 라이브 thread의 thread 정보를 돌려줍니다.
 long[] findDeadlockedThreads ()
          객체 모니터 또는소유 가능한 싱크로나이저의 취득을 대기하고 있어 데드락 상태에 있는 thread의 사이클을 검색합니다.
 long[] findMonitorDeadlockedThreads ()
          객체 모니터의 취득을 대기하고 있어 데드락 상태에 있는 thread의 사이클을 검색합니다.
 long[] getAllThreadIds ()
          모든 라이브 thread의 ID 를 돌려줍니다.
 long getCurrentThreadCpuTime ()
          현재의 thread의 합계 CPU 시간을 나노초단위로 돌려줍니다.
 long getCurrentThreadUserTime ()
          현재의 thread가 사용자 모드로 실행한 CPU 시간 (나노초단위)을 돌려줍니다.
 int getDaemonThreadCount ()
          라이브 demon thread의 현재의 수를 돌려줍니다.
 int getPeakThreadCount ()
          Java 가상 머신이 기동된 이후의, 또는 피크가 리셋 된 이후의, 피크 라이브 thread 카운트를 돌려줍니다.
 int getThreadCount ()
          demon thread와 demon 이외의 thread를 포함한 라이브 thread의 현재의 수를 돌려줍니다.
 long getThreadCpuTime (long id)
          지정된 ID 의 thread의 합계 CPU 시간 (나노초단위)을 돌려줍니다.
 ThreadInfo getThreadInfo (long id)
          스택 트레이스를 가지지 않는 지정된 id 의 thread의 thread 정보를 돌려줍니다.
 ThreadInfo [] getThreadInfo (long[] ids)
          스택 트레이스를 가지지 않는 입력 배열 ids 에 있는 ID 를 가지는 thread마다의 thread 정보를 돌려줍니다.
 ThreadInfo [] getThreadInfo (long[] ids, boolean lockedMonitors, boolean lockedSynchronizers)
          스택 트레이스 및 동기 정보를 가지는 입력 배열 ids 에 있는 ID 를 가지는 thread마다의 thread 정보를 돌려줍니다.
 ThreadInfo [] getThreadInfo (long[] ids, int maxDepth)
          지정된 수의 스택 트레이스 요소로부터 완성되는 스택 트레이스를 가지는, 입력 배열 ids 에 있는 ID 를 가지는 thread마다의 thread 정보를 돌려줍니다.
 ThreadInfo getThreadInfo (long id, int maxDepth)
          지정된 수의 스택 트레이스 요소로부터 완성되는 스택 트레이스를 가지는, 지정된 id 의 thread의 thread 정보를 돌려줍니다.
 long getThreadUserTime (long id)
          지정된 ID 의 thread가 사용자 모드로 실행한 CPU 시간 (나노초단위)을 돌려줍니다.
 long getTotalStartedThreadCount ()
          Java 가상 머신이 기동하고 나서 작성 및 기동된 thread의 합계수를 돌려줍니다.
 boolean isCurrentThreadCpuTimeSupported ()
          Java 가상 머신이 현재의 thread의 CPU 시간 측정을 지원할지 어떨지를 테스트합니다.
 boolean isObjectMonitorUsageSupported ()
          Java 가상 머신이 객체 모니터의 사용량의 감시를 지원할지 어떨지를 테스트합니다.
 boolean isSynchronizerUsageSupported ()
          Java 가상 머신이소유 가능한 싱크로나이저의 사용량의 감시를 지원할지 어떨지를 테스트합니다.
 boolean isThreadContentionMonitoringEnabled ()
          thread 컨텐션 감시가 유효한가 어떤가를 테스트합니다.
 boolean isThreadContentionMonitoringSupported ()
          Java 가상 머신이 thread 컨텐션 감시를 지원할지 어떨지를 테스트합니다.
 boolean isThreadCpuTimeEnabled ()
          thread의 CPU 시간 측정이 유효한가 어떤가를 테스트합니다.
 boolean isThreadCpuTimeSupported ()
          Java 가상 머신의 구현이 임의의 thread의 CPU 시간 측정을 지원할지 어떨지를 테스트합니다.
 void resetPeakThreadCount ()
          피크 thread 카운트를 라이브 thread의 현재의 수에 리셋 합니다.
 void setThreadContentionMonitoringEnabled (boolean enable)
          thread 컨텐션 감시를 유효 또는 무효로 합니다.
 void setThreadCpuTimeEnabled (boolean enable)
          thread의 CPU 시간 측정을 유효 또는 무효로 합니다.
 

메소드의 상세

getThreadCount

int getThreadCount()
demon thread와 demon 이외의 thread를 포함한 라이브 thread의 현재의 수를 돌려줍니다.

반환값:
라이브 thread의 현재의 수

getPeakThreadCount

int getPeakThreadCount()
Java 가상 머신이 기동된 이후의, 또는 피크가 리셋 된 이후의, 피크 라이브 thread 카운트를 돌려줍니다.

반환값:
피크 라이브 thread 카운트

getTotalStartedThreadCount

long getTotalStartedThreadCount()
Java 가상 머신이 기동하고 나서 작성 및 기동된 thread의 합계수를 돌려줍니다.

반환값:
기동된 thread의 합계수

getDaemonThreadCount

int getDaemonThreadCount()
라이브 demon thread의 현재의 수를 돌려줍니다.

반환값:
라이브 demon thread의 현재의 수

getAllThreadIds

long[] getAllThreadIds()
모든 라이브 thread의 ID 를 돌려줍니다. 반환된 배열에 포함되는 일부의 thread는, 이 메소드가 값을 돌려주었을 때에 종료하고 있던 가능성이 있습니다.

반환값:
thread ID 를 포함한 long 형의 배열
예외:
SecurityException - 시큐리티 매니저가 존재해, 호출원이 ManagementPermission("control")를 가지지 않는 경우

getThreadInfo

ThreadInfo  getThreadInfo(long id)
스택 트레이스를 가지지 않는 지정된 id 의 thread의 thread 정보를 돌려줍니다. 이 메소드는, 이하를 호출하는 것과 동등합니다.
getThreadInfo(id, 0);

이 메소드는, 지정된 ID 의 thread에 관한 thread 정보를 나타내는 ThreadInfo 객체를 돌려줍니다. 반환된 ThreadInfo 객체의 스택 트레이스, 락 된 모니터, 및 락 된 싱크로나이저는, 비웁니다. 지정된 ID 의 thread가 생존하고 있지 않는지, 존재하고 있지 않는 경우, 이 메소드는 null 를 돌려줍니다. 지정된 ID 의 thread가 기동되어 생존하고 있는 경우, thread는 생존하고 있습니다.

MBeanServer 액세스:ThreadInfo 의 맵형은,ThreadInfo.from 메소드로 지정된 속성을 가지는 CompositeData 입니다.

파라미터:
id - thread의 thread ID. 정의 값이 아니면 안된다
반환값:
스택 트레이스, 락 된 모니터, 및 싱크로나이저 정보를 가지지 않는, 지정된 ID 의 thread에 관한 ThreadInfo 객체. 지정된 ID 의 thread가 생존 또는 존재하고 있지 않는 경우는 null
예외:
IllegalArgumentException - id <= 0 의 경우
SecurityException - 시큐리티 매니저가 존재해, 호출원이 ManagementPermission("control")를 가지지 않는 경우

getThreadInfo

ThreadInfo [] getThreadInfo(long[] ids)
스택 트레이스를 가지지 않는 입력 배열 ids 에 있는 ID 를 가지는 thread마다의 thread 정보를 돌려줍니다. 이 메소드는, 이하를 호출하는 것과 동등합니다.
   getThreadInfo (ids, 0);
 

이 메소드는,ThreadInfo 객체의 배열을 돌려줍니다. 각 ThreadInfo 객체의 스택 트레이스, 락 된 모니터, 및 락 된 싱크로나이저는, 비웁니다. 지정된 ID 의 thread가 생존하고 있지 않는지, 존재하고 있지 않는 경우, 반환된 배열의 대응하는 요소는,null 를 포함합니다. 지정된 ID 의 thread가 기동되어 생존하고 있는 경우, thread는 생존하고 있습니다.

MBeanServer 액세스:ThreadInfo 의 맵형은,ThreadInfo.from 메소드로 지정된 속성을 가지는 CompositeData 입니다.

파라미터:
ids - thread ID 의 배열
반환값:
스택 트레이스, 락 된 모니터, 및 싱크로나이저 정보를 가지지 않는다 ID 의 입력 배열의 대응하는 요소에 ID 가 있는 thread의 정보를 포함한다 ThreadInfo 객체의 배열
예외:
IllegalArgumentException - 입력 배열 ids 의 요소가 <= 0 인 경우
SecurityException - 시큐리티 매니저가 존재해, 호출원이 ManagementPermission("control")를 가지지 않는 경우

getThreadInfo

ThreadInfo  getThreadInfo(long id,
                         int maxDepth)
지정된 수의 스택 트레이스 요소로부터 완성되는 스택 트레이스를 가지는, 지정된 id 의 thread의 thread 정보를 돌려줍니다. maxDepth 파라미터는, 스택 트레이스로부터 취득되는 StackTraceElement 의 최대수를 나타냅니다. maxDepth == Integer.MAX_VALUE 의 경우, thread의 스택 트레이스 전체가 덤프 됩니다. maxDepth == 0 의 경우, thread의 스택 트레이스는 덤프 되지 않습니다. 이 메소드는, thread의 락 된 모니터 및 락 된 싱크로나이저를 취득하지 않습니다.

Java 가상 머신이 thread의 스택 트레이스 정보를 가지지 않는 경우, 또는 maxDepth == 0 의 경우,ThreadInfo 객체의 스택 트레이스는 StackTraceElement 의 빈 상태(empty)의 배열이 됩니다.

지정된 ID 의 thread가 생존하고 있지 않는지, 존재하고 있지 않는 경우, 이 메소드는 null 를 돌려줍니다. 지정된 ID 의 thread가 기동되어 생존하고 있는 경우, thread는 생존하고 있습니다.

MBeanServer 액세스:ThreadInfo 의 맵형은,ThreadInfo.from 메소드로 지정된 속성을 가지는 CompositeData 입니다.

파라미터:
id - thread의 thread ID. 정의 값이 아니면 안되는
maxDepth - 덤프 되는 스택 트레이스의 엔트리의 최대수. Integer.MAX_VALUE 를 사용해, 태스크 전체를 덤프 하도록(듯이) 요구할 수 있다
반환값:
스택 트레이스, 락 된 모니터, 및 싱크로나이저 정보를 가지지 않는, 지정된 ID 의 thread에 관한 ThreadInfo . 지정된 ID 의 thread가 생존 또는 존재하고 있지 않는 경우는 null
예외:
IllegalArgumentException - id <= 0 의 경우
IllegalArgumentException - maxDepth is negative 의 경우
SecurityException - 시큐리티 매니저가 존재해, 호출원이 ManagementPermission("control")를 가지지 않는 경우

getThreadInfo

ThreadInfo [] getThreadInfo(long[] ids,
                           int maxDepth)
지정된 수의 스택 트레이스 요소로부터 완성되는 스택 트레이스를 가지는, 입력 배열 ids 에 있는 ID 를 가지는 thread마다의 thread 정보를 돌려줍니다. maxDepth 파라미터는, 스택 트레이스로부터 취득되는 StackTraceElement 의 최대수를 나타냅니다. maxDepth == Integer.MAX_VALUE 의 경우, thread의 스택 트레이스 전체가 덤프 됩니다. maxDepth == 0 의 경우, thread의 스택 트레이스는 덤프 되지 않습니다. 이 메소드는, thread의 락 된 모니터 및 락 된 싱크로나이저는 취득하지 않습니다.

Java 가상 머신이 thread의 스택 트레이스 정보를 가지지 않는 경우, 또는 maxDepth == 0 의 경우,ThreadInfo 객체의 스택 트레이스는 StackTraceElement 의 빈 상태(empty)의 배열이 됩니다.

이 메소드는,ThreadInfo 객체의 배열을 돌려줍니다. 배열의 각 요소는,ids 배열과 같은 인덱스를 가지는 thread에 관한 thread 정보입니다. 지정된 ID 의 thread가 생존하고 있지 않는지, 존재하지 않는 경우, 반환되는 배열의 대응하는 요소에 null 가 설정됩니다. 지정된 ID 의 thread가 기동되어 생존하고 있는 경우, thread는 생존하고 있습니다.

MBeanServer 액세스:ThreadInfo 의 맵형은,ThreadInfo.from 메소드로 지정된 속성을 가지는 CompositeData 입니다.

파라미터:
ids - thread ID 의 배열
maxDepth - 덤프 되는 스택 트레이스의 엔트리의 최대수. Integer.MAX_VALUE 를 사용해, 태스크 전체를 덤프 하도록(듯이) 요구할 수 있다
반환값:
스택 트레이스, 락 된 모니터, 및 싱크로나이저 정보를 가지지 않는다 ID 의 입력 배열의 대응하는 요소에 락 된 모니터 및 싱크로나이저 정보를 가지지 않는다 ID 의 입력 배열의 요소
예외:
IllegalArgumentException - maxDepth is negative 의 경우
IllegalArgumentException - 입력 배열 ids 의 요소가 <= 0 인 경우
SecurityException - 시큐리티 매니저가 존재해, 호출원이 ManagementPermission("control")를 가지지 않는 경우

isThreadContentionMonitoringSupported

boolean isThreadContentionMonitoringSupported()
Java 가상 머신이 thread 컨텐션 감시를 지원할지 어떨지를 테스트합니다.

반환값:
Java 가상 머신이 thread 컨텐션 감시를 지원하는 경우는 true, 그렇지 않은 경우는 false

isThreadContentionMonitoringEnabled

boolean isThreadContentionMonitoringEnabled()
thread 컨텐션 감시가 유효한가 어떤가를 테스트합니다.

반환값:
thread 컨텐션 감시가 유효한 경우는 true, 그렇지 않은 경우는 false
예외:
UnsupportedOperationException - Java 가상 머신이 thread 컨텐션 감시를 지원하지 않는 경우
관련 항목:
isThreadContentionMonitoringSupported()

setThreadContentionMonitoringEnabled

void setThreadContentionMonitoringEnabled(boolean enable)
thread 컨텐션 감시를 유효 또는 무효로 합니다. thread 컨텐션 감시는 디폴트로 무효로 설정되어 있습니다.

파라미터:
enable - 유효하게 하는 경우는 true, 무효로 하는 경우는 false
예외:
UnsupportedOperationException - Java 가상 머신이 thread 컨텐션 감시를 지원하지 않는 경우
SecurityException - 시큐리티 매니저가 존재해, 호출원이 ManagementPermission("control")를 가지지 않는 경우
관련 항목:
isThreadContentionMonitoringSupported()

getCurrentThreadCpuTime

long getCurrentThreadCpuTime()
현재의 thread의 합계 CPU 시간을 나노초단위로 돌려줍니다. 반환값은 나노초단위의 정밀도입니다만, 반드시 나노초의 정확도가 아닙니다. 구현이 사용자 모드시와 시스템 모드시를 구별하는 경우, 반환되는 CPU 시간은, 사용자 모드 또는 시스템 모드로 현재의 thread가 실행한 시간의 합계입니다.

이 메소드는, 로컬 관리로 사용하는 편리한 메소드이며, 이하를 호출하는 것과 동등합니다.

   getThreadCpuTime (Thread.currentThread(). getId());
 

반환값:
CPU 시간 측정이 유효한 경우는, 현재의 thread의 합계 CPU 시간. 그렇지 않은 경우는 -1
예외:
UnsupportedOperationException - Java 가상 머신이 현재의 thread의 CPU 시간 측정을 지원하지 않는 경우
관련 항목:
getCurrentThreadUserTime() , isCurrentThreadCpuTimeSupported() , isThreadCpuTimeEnabled() , setThreadCpuTimeEnabled(boolean)

getCurrentThreadUserTime

long getCurrentThreadUserTime()
현재의 thread가 사용자 모드로 실행한 CPU 시간 (나노초단위)을 돌려줍니다. 반환값은 나노초단위의 정밀도입니다만, 반드시 나노초의 정확도가 아닙니다.

이 메소드는, 로컬 관리로 사용하는 편리한 메소드이며, 이하를 호출하는 것과 동등합니다.

   getThreadUserTime (Thread.currentThread(). getId());
 

반환값:
CPU 시간 측정이 유효한 경우는, 현재의 thread의 사용자 레벨 CPU 시간. 그렇지 않은 경우는 -1
예외:
UnsupportedOperationException - Java 가상 머신이 현재의 thread의 CPU 시간 측정을 지원하지 않는 경우
관련 항목:
getCurrentThreadCpuTime() , isCurrentThreadCpuTimeSupported() , isThreadCpuTimeEnabled() , setThreadCpuTimeEnabled(boolean)

getThreadCpuTime

long getThreadCpuTime(long id)
지정된 ID 의 thread의 합계 CPU 시간 (나노초단위)을 돌려줍니다. 반환값은 나노초단위의 정밀도입니다만, 반드시 나노초의 정확도가 아닙니다. 구현이 사용자 모드시와 시스템 모드시를 구별하는 경우, 반환되는 CPU 시간은, 사용자 모드 또는 시스템 모드로 그 thread가 실행한 시간의 합계입니다.

지정된 ID 의 thread가 생존하고 있지 않는지, 존재하고 있지 않는 경우, 이 메소드는 -1 을 돌려줍니다. CPU 시간 측정이 무효의 경우, 이 메소드는 -1 을 돌려줍니다. 지정된 ID 의 thread가 기동되어 생존하고 있는 경우, thread는 생존하고 있습니다.

thread가 기동된 뒤에 CPU 시간 측정이 유효하게 되었을 경우, Java 가상 머신의 구현에서는, CPU 시간 측정이 기동된 포인트로서 CPU 시간 측정 기능이 유효하게 된 시간 이전의 임의의 시간을 선택할 수 있습니다.

파라미터:
id - thread의 thread ID
반환값:
지정된 ID 의 thread가 존재해, 생존하고 있어, CPU 시간 측정이 유효한 경우는, 지정된 ID 의 thread의 합계 CPU 시간. 그렇지 않은 경우는 -1
예외:
IllegalArgumentException - id <= 0 의 경우
UnsupportedOperationException - Java 가상 머신이 다른 thread의 CPU 시간 측정을 지원하지 않는 경우
관련 항목:
getThreadUserTime(long) , isThreadCpuTimeSupported() , isThreadCpuTimeEnabled() , setThreadCpuTimeEnabled(boolean)

getThreadUserTime

long getThreadUserTime(long id)
지정된 ID 의 thread가 사용자 모드로 실행한 CPU 시간 (나노초단위)을 돌려줍니다. 반환값은 나노초단위의 정밀도입니다만, 반드시 나노초의 정확도가 아닙니다.

지정된 ID 의 thread가 생존하고 있지 않는지, 존재하고 있지 않는 경우, 이 메소드는 -1 을 돌려줍니다. CPU 시간 측정이 무효의 경우, 이 메소드는 -1 을 돌려줍니다. 지정된 ID 의 thread가 기동되어 생존하고 있는 경우, thread는 생존하고 있습니다.

thread가 기동된 뒤에 CPU 시간 측정이 유효하게 되었을 경우, Java 가상 머신의 구현에서는, CPU 시간 측정이 기동된 포인트로서 CPU 시간 측정 기능이 유효하게 된 시간 이전의 임의의 시간을 선택할 수 있습니다.

파라미터:
id - thread의 thread ID
반환값:
지정된 ID 의 thread가 존재해, 생존하고 있어, CPU 시간 측정이 유효한 경우는, 지정된 ID 의 thread의 사용자 레벨의 CPU 시간. 그렇지 않은 경우는 -1
예외:
IllegalArgumentException - id <= 0 의 경우
UnsupportedOperationException - Java 가상 머신이 다른 thread의 CPU 시간 측정을 지원하지 않는 경우
관련 항목:
getThreadCpuTime(long) , isThreadCpuTimeSupported() , isThreadCpuTimeEnabled() , setThreadCpuTimeEnabled(boolean)

isThreadCpuTimeSupported

boolean isThreadCpuTimeSupported()
Java 가상 머신의 구현이 임의의 thread의 CPU 시간 측정을 지원할지 어떨지를 테스트합니다. 임의의 thread의 CPU 시간 측정을 지원하는 Java 가상 머신의 구현은 현재의 thread의 CPU 시간 측정도 지원합니다.

반환값:
Java 가상 머신이 임의의 thread의 CPU 시간 측정을 지원하는 경우는, true. 그렇지 않은 경우는 false

isCurrentThreadCpuTimeSupported

boolean isCurrentThreadCpuTimeSupported()
Java 가상 머신이 현재의 thread의 CPU 시간 측정을 지원할지 어떨지를 테스트합니다. isThreadCpuTimeSupported()true 를 돌려주는 경우, 이 메소드는 true 를 돌려줍니다.

반환값:
Java 가상 머신이 현재의 thread의 CPU 시간 측정을 지원하는 경우는, true. 그렇지 않은 경우는 false

isThreadCpuTimeEnabled

boolean isThreadCpuTimeEnabled()
thread의 CPU 시간 측정이 유효한가 어떤가를 테스트합니다.

반환값:
thread의 CPU 시간 측정이 유효한 경우는 true, 그렇지 않은 경우는 false
예외:
UnsupportedOperationException - Java 가상 머신이 다른 thread 뿐만이 아니라 현재의 thread의 CPU 시간 측정도 지원하지 않는 경우
관련 항목:
isThreadCpuTimeSupported() , isCurrentThreadCpuTimeSupported()

setThreadCpuTimeEnabled

void setThreadCpuTimeEnabled(boolean enable)
thread의 CPU 시간 측정을 유효 또는 무효로 합니다. 디폴트의 설정은 플랫폼에 응해 다릅니다.

파라미터:
enable - 유효하게 하는 경우는 true, 무효로 하는 경우는 false
예외:
UnsupportedOperationException - Java 가상 머신이 임의의 thread 뿐만이 아니라 현재의 thread의 CPU 시간 측정도 지원하지 않는 경우
SecurityException - 시큐리티 매니저가 존재해, 호출원이 ManagementPermission("control")를 가지지 않는 경우
관련 항목:
isThreadCpuTimeSupported() , isCurrentThreadCpuTimeSupported()

findMonitorDeadlockedThreads

long[] findMonitorDeadlockedThreads()
객체 모니터의 취득을 대기하고 있어 데드락 상태에 있는 thread의 사이클을 검색합니다. 즉, thread는 블록 되어 동기 블록에 들어가는 것을 대기하고 있는지,Object.wait 호출뒤, 동기 블록에 재입 하는 것을 대기하고 있습니다. 여기에서는, 사이클중의 다른 thread에 의해 보관 유지되고 있는 다른 모니터의 취득을 시행하고 있는 동안, 각 thread는 1 개의 모니터를 보유하고 있습니다.

공식으로는, thread가, 「다른 thread에 의해 보유되는 객체 모니터를 대기하고 있다」관계에 있는 사이클의 일부인 경우, thread는 「모니터 데드락」됩니다. 무엇보다 간단한 케이스에 대해 설명하면(자), thread A 는, thread B 가 소유하는 모니터를 대기하는 것을 블록 되어 thread B 는 thread A 가 소유하는 모니터를 대기하는 것을 블록 됩니다.

이 메소드는 트러블 슈팅을 위해서(때문에) 설계되고 있습니다만, 동기 제어를 위한 것이 아닙니다. 이 메소드의 조작은 부하가 커질 가능성이 있습니다.

이 메소드는, 객체 모니터에 관한 데드락만을 검색합니다. 객체 모니터와소유 가능한 싱크로나이저의 양쪽 모두에 관한 데드락을 검색하려면 ,findDeadlockedThreads 메소드를 사용하도록 해 주세요.

반환값:
모니터 데드락 되고 있는 thread의 ID 의 배열. 그렇지 않은 경우는 null
예외:
SecurityException - 시큐리티 매니저가 존재해, 호출원이 ManagementPermission("control")를 가지지 않는 경우
관련 항목:
findDeadlockedThreads()

resetPeakThreadCount

void resetPeakThreadCount()
피크 thread 카운트를 라이브 thread의 현재의 수에 리셋 합니다.

예외:
SecurityException - 시큐리티 매니저가 존재해, 호출원이 ManagementPermission("control")를 가지지 않는 경우
관련 항목:
getPeakThreadCount() , getThreadCount()

findDeadlockedThreads

long[] findDeadlockedThreads()
객체 모니터 또는소유 가능한 싱크로나이저의 취득을 대기하고 있어 데드락 상태에 있는 thread의 사이클을 검색합니다. 이것들 2 종류의 락을 대기하고 있는 사이클중에, 각 thread가 락을 소유하고 있어, 이 사이클외의 thread에 의해 벌써 보관 유지되고 있는 다른 락을 취득하려고 하면(자), thread는 데드락 상태가 됩니다.

이 메소드는 트러블 슈팅을 위해서(때문에) 설계되고 있습니다만, 동기 제어를 위한 것이 아닙니다. 이 메소드의 조작은 부하가 커질 가능성이 있습니다.

반환값:
객체 모니터 또는 소유 가능한 싱크로나이저가 있는 경우에, 그것들을 대기하고 있어 데드락 되고 있는 thread의 ID 의 배열. 그렇지 않은 경우는 null
예외:
SecurityException - 시큐리티 매니저가 존재해, 호출원이 ManagementPermission("control")를 가지지 않는 경우
UnsupportedOperationException - Java 가상 머신이 소유 가능한 싱크로나이저의 사용량의 감시를 지원하지 않는 경우
도입된 버젼:
1.6
관련 항목:
isSynchronizerUsageSupported() , findMonitorDeadlockedThreads()

isObjectMonitorUsageSupported

boolean isObjectMonitorUsageSupported()
Java 가상 머신이 객체 모니터의 사용량의 감시를 지원할지 어떨지를 테스트합니다.

반환값:
Java 가상 머신이 객체 모니터의 사용량의 감시를 지원하고 있는 경우는 true, 그렇지 않은 경우는 false
도입된 버젼:
1.6
관련 항목:
dumpAllThreads(boolean, boolean)

isSynchronizerUsageSupported

boolean isSynchronizerUsageSupported()
Java 가상 머신이소유 가능한 싱크로나이저의 사용량의 감시를 지원할지 어떨지를 테스트합니다.

반환값:
Java 가상 머신이 소유 가능한 싱크로나이저의 사용량의 감시를 지원하고 있는 경우는 true, 그렇지 않은 경우는 false
도입된 버젼:
1.6
관련 항목:
dumpAllThreads(boolean, boolean)

getThreadInfo

ThreadInfo [] getThreadInfo(long[] ids,
                           boolean lockedMonitors,
                           boolean lockedSynchronizers)
스택 트레이스 및 동기 정보를 가지는 입력 배열 ids 에 있는 ID 를 가지는 thread마다의 thread 정보를 돌려줍니다.

이 메소드는, thread 마다 thread 정보의 snapshot를 가져옵니다. 예를 들어 다음과 같습니다.

이 메소드는,ThreadInfo 객체의 배열을 돌려줍니다. 배열의 각 요소는,ids 배열과 같은 인덱스를 가지는 thread에 관한 thread 정보입니다. 지정된 ID 의 thread가 생존하고 있지 않는지, 존재하지 않는 경우, 반환되는 배열의 대응하는 요소에 null 가 설정됩니다. 지정된 ID 의 thread가 기동되어 생존하고 있는 경우, thread는 생존하고 있습니다.

thread가 객체 모니터를 잠그지 않은 경우, 또는 lockedMonitorsfalse 의 경우, 반환되는 ThreadInfo 객체는 빈 상태(empty)의 MonitorInfo 배열을 가집니다. 같이 thread가 싱크로나이저를 잠그지 않은 경우, 또는 lockedSynchronizersfalse 의 경우, 반환되는 ThreadInfo 객체는 빈 상태(empty)의 LockInfo 배열을 가집니다.

lockedMonitors 파라미터 및 lockedSynchronizers 파라미터의 양쪽 모두가 false 의 경우는, 다음을 호출하는 것에 상당합니다.

     getThreadInfo(ids, Integer.MAX_VALUE) 
 

이 메소드는 트러블 슈팅을 위해서(때문에) 설계되고 있습니다만, 동기 제어를 위한 것이 아닙니다. 이 메소드의 조작은 부하가 커질 가능성이 있습니다.

MBeanServer 액세스:ThreadInfo 의 맵형은,ThreadInfo.from 메소드로 지정된 속성을 가지는 CompositeData 입니다.

파라미터:
ids - thread ID 의 배열
lockedMonitors - true 의 경우, 락 된 모든 모니터를 취득하는
lockedSynchronizers - true 의 경우, 락 된 모든 소유 가능한 싱크로나이저를 취득한다
반환값:
ID 의 입력 배열의 대응하는 요소에 ID 가 있는 thread의 정보를 포함한다 ThreadInfo 객체의 배열
예외:
SecurityException - 시큐리티 매니저가 존재해, 호출원이 ManagementPermission("control")를 가지지 않는 경우
UnsupportedOperationException -
  • lockedMonitorstrue 이지만 Java 가상 머신이 object monitor usage 의 감시를 지원하지 않는 경우, 또는
  • lockedSynchronizerstrue 이지만 Java 가상 머신이 ownable synchronizer usage 의 감시를 지원하지 않는 경우
도입된 버젼:
1.6
관련 항목:
isObjectMonitorUsageSupported() , isSynchronizerUsageSupported()

dumpAllThreads

ThreadInfo [] dumpAllThreads(boolean lockedMonitors,
                            boolean lockedSynchronizers)
스택 트레이스 및 동기 정보를 가지는 모든 라이브 thread의 thread 정보를 돌려줍니다. 반환된 배열에 포함되는 일부의 thread는, 이 메소드가 값을 돌려주었을 때에 종료하고 있던 가능성이 있습니다.

이 메소드는,getThreadInfo(long[], boolean, boolean) 메소드로 지정된 ThreadInfo 객체의 배열을 돌려줍니다.

파라미터:
lockedMonitors - true 의 경우, 락 된 모든 모니터를 덤프 하는
lockedSynchronizers - true 의 경우, 락 된 모든 소유 가능한 싱크로나이저를 덤프 한다
반환값:
모든 라이브 thread ThreadInfo 의 배열
예외:
SecurityException - 시큐리티 매니저가 존재해, 호출원이 ManagementPermission("control")를 가지지 않는 경우
UnsupportedOperationException -
  • lockedMonitorstrue 이지만 Java 가상 머신이 object monitor usage 의 감시를 지원하지 않는 경우, 또는
  • lockedSynchronizerstrue 이지만 Java 가상 머신이 ownable synchronizer usage 의 감시를 지원하지 않는 경우
도입된 버젼:
1.6
관련 항목:
isObjectMonitorUsageSupported() , isSynchronizerUsageSupported()

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.