|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
public interface ThreadMXBean
Java 가상 머신의 thread 시스템의 관리 인터페이스입니다.
Java 가상 머신은, 이 인터페이스의 구현 클래스의 단일 인스턴스를 가집니다. 이 인터페이스를 구현하고 있는 인스턴스는,ManagementFactory.getThreadMXBean()
메소드를 호출해 취득할 수 있다, 혹은 platform MBeanServer
메소드로부터 취득할 수 있는 MXBean 입니다.
MBeanServer 내에서 thread 시스템의 MXBean 를 일의에 식별하기 위한 ObjectName 는 이하대로입니다.
java.lang:type=Threading
Thread.getId()
메소드의 호출에 의해 반환된 정의 long 형의 값입니다. thread ID 는 일의이며, 그 수명을 통해서 변경될 것은 없습니다. thread가 종료하면(자), thread ID 는 재사용 가능합니다.
이 인터페이스의 일부의 메소드는, 입력 파라미터로서 thread ID 또는 thread ID 의 배열을 취득해 thread마다의 정보를 돌려줍니다.
isThreadCpuTimeSupported()
메소드를 사용하면(자), Java 가상 머신으로 임의의 thread의 CPU 시간을 측정할 수 있을지 어떨지를 판정할 수 있습니다. isCurrentThreadCpuTimeSupported()
메소드를 사용하면(자), Java 가상 머신이 현재의 thread의 CPU 시간의 측정을 지원하고 있을지 어떨지를 판정할 수 있습니다. 임의의 thread의 CPU 시간 측정을 지원하는 Java 가상 머신의 구현은 현재의 thread의 CPU 시간 측정도 지원합니다.
이 인터페이스로 제공된 CPU 시간은, 나노초단위의 정밀도를 제공합니다만, 반드시 나노초의 정확도가 아닙니다.
Java 가상 머신에서는, 디폴트로 CPU 시간의 측정을 무효로 할 수 있습니다. isThreadCpuTimeEnabled()
메소드와 setThreadCpuTimeEnabled(boolean)
메소드를 사용해, CPU 시간 측정이 유효하게 되어 있는 것을 테스트하거나 측정의 지원를 유효 또는 무효로 하거나 할 수가 있습니다. thread CPU 측정을 유효하게 하면(자), 일부의 Java 가상 머신의 구현에서는, 부하가 커질 가능성이 있습니다.
isThreadContentionMonitoringSupported()
메소드를 사용해, Java 가상 머신이 thread 컨텐션 감시를 지원하고 있을지 어떨지를 판정할 수 있습니다. thread 컨텐션 감시는 디폴트로 무효입니다. setThreadContentionMonitoringEnabled(boolean)
메소드를 사용해, thread 컨텐션 감시를 유효하게 할 수가 있습니다.
getThreadInfo(long[], boolean, boolean)
메소드와 dumpAllThreads(boolean, boolean)
메소드를 사용하면(자), thread 스택 트레이스 및 동기 정보 (thread가 취득을 블록 되고 있는 또는 대기하고 있는 lock 에 대해, thread가 현재 소유하고 있는 락에 대하는 것)를 취득할 수 있습니다.
ThreadMXBean 인터페이스는, 실행중 어플리케이션의 데드락을 찾아내기 위한 findMonitorDeadlockedThreads()
메소드 및 findDeadlockedThreads()
메소드를 제공합니다.
메소드의 개요 | |
---|---|
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 시간 측정을 유효 또는 무효로 합니다. |
메소드의 상세 |
---|
int getThreadCount()
int getPeakThreadCount()
long getTotalStartedThreadCount()
int getDaemonThreadCount()
long[] getAllThreadIds()
SecurityException
- 시큐리티 매니저가 존재해,
호출원이 ManagementPermission("control")를
가지지 않는 경우ThreadInfo getThreadInfo(long id)
getThreadInfo(id, 0);
이 메소드는, 지정된 ID 의 thread에 관한 thread 정보를 나타내는 ThreadInfo 객체를 돌려줍니다. 반환된 ThreadInfo 객체의 스택 트레이스, 락 된 모니터, 및 락 된 싱크로나이저는, 비웁니다. 지정된 ID 의 thread가 생존하고 있지 않는지, 존재하고 있지 않는 경우, 이 메소드는 null 를 돌려줍니다. 지정된 ID 의 thread가 기동되어 생존하고 있는 경우, thread는 생존하고 있습니다.
MBeanServer 액세스:ThreadInfo 의 맵형은,ThreadInfo.from
메소드로 지정된 속성을 가지는 CompositeData 입니다.
id
- thread의 thread ID. 정의 값이 아니면 안된다
ThreadInfo
객체.
지정된 ID 의 thread가 생존 또는 존재하고 있지 않는 경우는
null
IllegalArgumentException
- id <= 0 의 경우
SecurityException
- 시큐리티 매니저가 존재해,
호출원이 ManagementPermission("control")를
가지지 않는 경우ThreadInfo [] getThreadInfo(long[] ids)
getThreadInfo
(ids, 0);
이 메소드는,ThreadInfo 객체의 배열을 돌려줍니다. 각 ThreadInfo 객체의 스택 트레이스, 락 된 모니터, 및 락 된 싱크로나이저는, 비웁니다. 지정된 ID 의 thread가 생존하고 있지 않는지, 존재하고 있지 않는 경우, 반환된 배열의 대응하는 요소는,null 를 포함합니다. 지정된 ID 의 thread가 기동되어 생존하고 있는 경우, thread는 생존하고 있습니다.
MBeanServer 액세스:ThreadInfo 의 맵형은,ThreadInfo.from
메소드로 지정된 속성을 가지는 CompositeData 입니다.
ids
- thread ID 의 배열
ThreadInfo
객체의 배열
IllegalArgumentException
- 입력 배열 ids 의 요소가
<= 0 인 경우
SecurityException
- 시큐리티 매니저가 존재해,
호출원이 ManagementPermission("control")를
가지지 않는 경우ThreadInfo getThreadInfo(long id, int 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 를 사용해,
태스크 전체를 덤프 하도록(듯이) 요구할 수 있다
ThreadInfo
.
지정된 ID 의 thread가 생존 또는 존재하고 있지 않는 경우는
null
IllegalArgumentException
- id <= 0 의 경우
IllegalArgumentException
- maxDepth is negative 의 경우
SecurityException
- 시큐리티 매니저가 존재해,
호출원이 ManagementPermission("control")를
가지지 않는 경우ThreadInfo [] getThreadInfo(long[] ids, int 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 를 사용해,
태스크 전체를 덤프 하도록(듯이) 요구할 수 있다
IllegalArgumentException
- maxDepth is negative 의 경우
IllegalArgumentException
- 입력 배열 ids 의 요소가
<= 0 인 경우
SecurityException
- 시큐리티 매니저가 존재해,
호출원이 ManagementPermission("control")를
가지지 않는 경우boolean isThreadContentionMonitoringSupported()
boolean isThreadContentionMonitoringEnabled()
UnsupportedOperationException
- Java 가상 머신이
thread 컨텐션 감시를 지원하지 않는 경우isThreadContentionMonitoringSupported()
void setThreadContentionMonitoringEnabled(boolean enable)
enable
- 유효하게 하는 경우는 true,
무효로 하는 경우는 false
UnsupportedOperationException
- Java 가상 머신이
thread 컨텐션 감시를 지원하지 않는 경우
SecurityException
- 시큐리티 매니저가 존재해,
호출원이 ManagementPermission("control")를
가지지 않는 경우isThreadContentionMonitoringSupported()
long getCurrentThreadCpuTime()
이 메소드는, 로컬 관리로 사용하는 편리한 메소드이며, 이하를 호출하는 것과 동등합니다.
getThreadCpuTime
(Thread.currentThread(). getId());
UnsupportedOperationException
- Java 가상 머신이
현재의 thread의 CPU 시간 측정을
지원하지 않는 경우getCurrentThreadUserTime()
,
isCurrentThreadCpuTimeSupported()
,
isThreadCpuTimeEnabled()
,
setThreadCpuTimeEnabled(boolean)
long getCurrentThreadUserTime()
이 메소드는, 로컬 관리로 사용하는 편리한 메소드이며, 이하를 호출하는 것과 동등합니다.
getThreadUserTime
(Thread.currentThread(). getId());
UnsupportedOperationException
- Java 가상 머신이
현재의 thread의 CPU 시간 측정을
지원하지 않는 경우getCurrentThreadCpuTime()
,
isCurrentThreadCpuTimeSupported()
,
isThreadCpuTimeEnabled()
,
setThreadCpuTimeEnabled(boolean)
long getThreadCpuTime(long id)
지정된 ID 의 thread가 생존하고 있지 않는지, 존재하고 있지 않는 경우, 이 메소드는 -1 을 돌려줍니다. CPU 시간 측정이 무효의 경우, 이 메소드는 -1 을 돌려줍니다. 지정된 ID 의 thread가 기동되어 생존하고 있는 경우, thread는 생존하고 있습니다.
thread가 기동된 뒤에 CPU 시간 측정이 유효하게 되었을 경우, Java 가상 머신의 구현에서는, CPU 시간 측정이 기동된 포인트로서 CPU 시간 측정 기능이 유효하게 된 시간 이전의 임의의 시간을 선택할 수 있습니다.
id
- thread의 thread ID
IllegalArgumentException
- id <= 0 의 경우
UnsupportedOperationException
- Java 가상 머신이
다른 thread의 CPU 시간 측정을
지원하지 않는 경우getThreadUserTime(long)
,
isThreadCpuTimeSupported()
,
isThreadCpuTimeEnabled()
,
setThreadCpuTimeEnabled(boolean)
long getThreadUserTime(long id)
지정된 ID 의 thread가 생존하고 있지 않는지, 존재하고 있지 않는 경우, 이 메소드는 -1 을 돌려줍니다. CPU 시간 측정이 무효의 경우, 이 메소드는 -1 을 돌려줍니다. 지정된 ID 의 thread가 기동되어 생존하고 있는 경우, thread는 생존하고 있습니다.
thread가 기동된 뒤에 CPU 시간 측정이 유효하게 되었을 경우, Java 가상 머신의 구현에서는, CPU 시간 측정이 기동된 포인트로서 CPU 시간 측정 기능이 유효하게 된 시간 이전의 임의의 시간을 선택할 수 있습니다.
id
- thread의 thread ID
IllegalArgumentException
- id <= 0 의 경우
UnsupportedOperationException
- Java 가상 머신이
다른 thread의 CPU 시간 측정을
지원하지 않는 경우getThreadCpuTime(long)
,
isThreadCpuTimeSupported()
,
isThreadCpuTimeEnabled()
,
setThreadCpuTimeEnabled(boolean)
boolean isThreadCpuTimeSupported()
boolean isCurrentThreadCpuTimeSupported()
isThreadCpuTimeSupported()
가 true 를 돌려주는 경우, 이 메소드는 true 를 돌려줍니다.
boolean isThreadCpuTimeEnabled()
UnsupportedOperationException
- Java 가상 머신이
다른 thread 뿐만이 아니라 현재의 thread의 CPU 시간 측정도
지원하지 않는 경우isThreadCpuTimeSupported()
,
isCurrentThreadCpuTimeSupported()
void setThreadCpuTimeEnabled(boolean enable)
enable
- 유효하게 하는 경우는 true,
무효로 하는 경우는 false
UnsupportedOperationException
- Java 가상 머신이
임의의 thread 뿐만이 아니라 현재의 thread의
CPU 시간 측정도 지원하지 않는 경우
SecurityException
- 시큐리티 매니저가 존재해,
호출원이 ManagementPermission("control")를
가지지 않는 경우isThreadCpuTimeSupported()
,
isCurrentThreadCpuTimeSupported()
long[] findMonitorDeadlockedThreads()
Object.wait
호출뒤, 동기 블록에 재입 하는 것을 대기하고 있습니다. 여기에서는, 사이클중의 다른 thread에 의해 보관 유지되고 있는 다른 모니터의 취득을 시행하고 있는 동안, 각 thread는 1 개의 모니터를 보유하고 있습니다.
공식으로는, thread가, 「다른 thread에 의해 보유되는 객체 모니터를 대기하고 있다」관계에 있는 사이클의 일부인 경우, thread는 「모니터 데드락」됩니다. 무엇보다 간단한 케이스에 대해 설명하면(자), thread A 는, thread B 가 소유하는 모니터를 대기하는 것을 블록 되어 thread B 는 thread A 가 소유하는 모니터를 대기하는 것을 블록 됩니다.
이 메소드는 트러블 슈팅을 위해서(때문에) 설계되고 있습니다만, 동기 제어를 위한 것이 아닙니다. 이 메소드의 조작은 부하가 커질 가능성이 있습니다.
이 메소드는, 객체 모니터에 관한 데드락만을 검색합니다. 객체 모니터와소유 가능한 싱크로나이저의 양쪽 모두에 관한 데드락을 검색하려면 ,findDeadlockedThreads
메소드를 사용하도록 해 주세요.
SecurityException
- 시큐리티 매니저가 존재해,
호출원이 ManagementPermission("control")를
가지지 않는 경우findDeadlockedThreads()
void resetPeakThreadCount()
SecurityException
- 시큐리티 매니저가 존재해,
호출원이 ManagementPermission("control")를
가지지 않는 경우getPeakThreadCount()
,
getThreadCount()
long[] findDeadlockedThreads()
이 메소드는 트러블 슈팅을 위해서(때문에) 설계되고 있습니다만, 동기 제어를 위한 것이 아닙니다. 이 메소드의 조작은 부하가 커질 가능성이 있습니다.
SecurityException
- 시큐리티 매니저가 존재해,
호출원이 ManagementPermission("control")를
가지지 않는 경우
UnsupportedOperationException
- Java 가상 머신이
소유 가능한 싱크로나이저의 사용량의 감시를 지원하지 않는 경우isSynchronizerUsageSupported()
,
findMonitorDeadlockedThreads()
boolean isObjectMonitorUsageSupported()
dumpAllThreads(boolean, boolean)
boolean isSynchronizerUsageSupported()
dumpAllThreads(boolean, boolean)
ThreadInfo [] getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers)
이 메소드는, thread 마다 thread 정보의 snapshot를 가져옵니다. 예를 들어 다음과 같습니다.
이 메소드는,ThreadInfo 객체의 배열을 돌려줍니다. 배열의 각 요소는,ids 배열과 같은 인덱스를 가지는 thread에 관한 thread 정보입니다. 지정된 ID 의 thread가 생존하고 있지 않는지, 존재하지 않는 경우, 반환되는 배열의 대응하는 요소에 null 가 설정됩니다. 지정된 ID 의 thread가 기동되어 생존하고 있는 경우, thread는 생존하고 있습니다.
thread가 객체 모니터를 잠그지 않은 경우, 또는 lockedMonitors 가 false 의 경우, 반환되는 ThreadInfo 객체는 빈 상태(empty)의 MonitorInfo 배열을 가집니다. 같이 thread가 싱크로나이저를 잠그지 않은 경우, 또는 lockedSynchronizers 가 false 의 경우, 반환되는 ThreadInfo 객체는 빈 상태(empty)의 LockInfo 배열을 가집니다.
lockedMonitors 파라미터 및 lockedSynchronizers 파라미터의 양쪽 모두가 false 의 경우는, 다음을 호출하는 것에 상당합니다.
getThreadInfo(ids, Integer.MAX_VALUE)
이 메소드는 트러블 슈팅을 위해서(때문에) 설계되고 있습니다만, 동기 제어를 위한 것이 아닙니다. 이 메소드의 조작은 부하가 커질 가능성이 있습니다.
MBeanServer 액세스:ThreadInfo 의 맵형은,ThreadInfo.from
메소드로 지정된 속성을 가지는 CompositeData 입니다.
ids
- thread ID 의 배열lockedMonitors
- true 의 경우, 락 된 모든 모니터를 취득하는lockedSynchronizers
- true 의 경우, 락 된 모든
소유 가능한 싱크로나이저를 취득한다
ThreadInfo
객체의 배열
SecurityException
- 시큐리티 매니저가 존재해,
호출원이 ManagementPermission("control")를
가지지 않는 경우
UnsupportedOperationException
- isObjectMonitorUsageSupported()
,
isSynchronizerUsageSupported()
ThreadInfo [] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers)
이 메소드는,getThreadInfo(long[], boolean, boolean)
메소드로 지정된 ThreadInfo
객체의 배열을 돌려줍니다.
lockedMonitors
- true 의 경우, 락 된 모든 모니터를 덤프 하는lockedSynchronizers
- true 의 경우, 락 된 모든
소유 가능한 싱크로나이저를 덤프 한다
ThreadInfo
의 배열
SecurityException
- 시큐리티 매니저가 존재해,
호출원이 ManagementPermission("control")를
가지지 않는 경우
UnsupportedOperationException
- isObjectMonitorUsageSupported()
,
isSynchronizerUsageSupported()
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.