public class ThreadInfo extends Object
ThreadInfo
contains the information
about a thread including:
General thread information
- Thread ID.
- Name of the thread.
- Whether a thread is a daemon thread
Execution information
- Thread state.
- The object upon which the thread is blocked due to:
- waiting to enter a synchronization block/method, or
- waiting to be notified in a
Object.wait
method, or - parking due to a
LockSupport.park
call.
- The ID of the thread that owns the object that the thread is blocked.
- Stack trace of the thread.
- List of object monitors locked by the thread.
- List of ownable synchronizers locked by the thread.
- Thread priority
Synchronization Statistics
- The number of times that the thread has blocked for synchronization or waited for notification.
- The accumulated elapsed time that the thread has blocked
for synchronization or waited for notification
since
thread contention monitoring
was enabled. Some Java virtual machine implementation may not support this. TheThreadMXBean.isThreadContentionMonitoringSupported()
method can be used to determine if a Java virtual machine supports this.
This thread information class is designed for use in monitoring of the system, not for synchronization control.
MXBean Mapping
ThreadInfo
is mapped to a CompositeData
with attributes as specified in
the from
method.- Since:
- 1.5
- See Also:
ThreadMXBean.getThreadInfo(long)
,ThreadMXBean.dumpAllThreads(boolean, boolean)
-
Method Summary
Modifier and Type Method Description static ThreadInfo
from(CompositeData cd)
Returns aThreadInfo
object represented by the givenCompositeData
.long
getBlockedCount()
Returns the total number of times that the thread associated with thisThreadInfo
blocked to enter or reenter a monitor.long
getBlockedTime()
Returns the approximate accumulated elapsed time (in milliseconds) that the thread associated with thisThreadInfo
has blocked to enter or reenter a monitor since thread contention monitoring is enabled.MonitorInfo[]
getLockedMonitors()
Returns an array ofMonitorInfo
objects, each of which represents an object monitor currently locked by the thread associated with thisThreadInfo
.LockInfo[]
getLockedSynchronizers()
Returns an array ofLockInfo
objects, each of which represents an ownable synchronizer currently locked by the thread associated with thisThreadInfo
.LockInfo
getLockInfo()
Returns theLockInfo
of an object for which the thread associated with thisThreadInfo
is blocked waiting.String
getLockName()
Returns thestring representation
of an object for which the thread associated with thisThreadInfo
is blocked waiting.long
getLockOwnerId()
Returns the ID of the thread which owns the object for which the thread associated with thisThreadInfo
is blocked waiting.String
getLockOwnerName()
Returns the name of the thread which owns the object for which the thread associated with thisThreadInfo
is blocked waiting.int
getPriority()
Returns the thread priority of the thread associated with thisThreadInfo
.StackTraceElement[]
getStackTrace()
Returns the stack trace of the thread associated with thisThreadInfo
.long
getThreadId()
Returns the ID of the thread associated with thisThreadInfo
.String
getThreadName()
Returns the name of the thread associated with thisThreadInfo
.Thread.State
getThreadState()
Returns the state of the thread associated with thisThreadInfo
.long
getWaitedCount()
Returns the total number of times that the thread associated with thisThreadInfo
waited for notification.long
getWaitedTime()
Returns the approximate accumulated elapsed time (in milliseconds) that the thread associated with thisThreadInfo
has waited for notification since thread contention monitoring is enabled.boolean
isDaemon()
Tests if the thread associated with thisThreadInfo
is a daemon thread.boolean
isInNative()
Tests if the thread associated with thisThreadInfo
is executing native code via the Java Native Interface (JNI).boolean
isSuspended()
Tests if the thread associated with thisThreadInfo
is suspended.String
toString()
Returns a string representation of this thread info.
-
Method Details
-
getThreadId
public long getThreadId()Returns the ID of the thread associated with thisThreadInfo
.- Returns:
- the ID of the associated thread.
-
getThreadName
Returns the name of the thread associated with thisThreadInfo
.- Returns:
- the name of the associated thread.
-
getThreadState
Returns the state of the thread associated with thisThreadInfo
.- Returns:
Thread.State
of the associated thread.
-
getBlockedTime
public long getBlockedTime()Returns the approximate accumulated elapsed time (in milliseconds) that the thread associated with thisThreadInfo
has blocked to enter or reenter a monitor since thread contention monitoring is enabled. I.e. the total accumulated time the thread has been in theBLOCKED
state since thread contention monitoring was last enabled. This method returns-1
if thread contention monitoring is disabled.The Java virtual machine may measure the time with a high resolution timer. This statistic is reset when the thread contention monitoring is reenabled.
- Returns:
- the approximate accumulated elapsed time in milliseconds
that a thread entered the
BLOCKED
state;-1
if thread contention monitoring is disabled. - Throws:
UnsupportedOperationException
- if the Java virtual machine does not support this operation.- See Also:
ThreadMXBean.isThreadContentionMonitoringSupported()
,ThreadMXBean.setThreadContentionMonitoringEnabled(boolean)
-
getBlockedCount
public long getBlockedCount()Returns the total number of times that the thread associated with thisThreadInfo
blocked to enter or reenter a monitor. I.e. the number of times a thread has been in theBLOCKED
state.- Returns:
- the total number of times that the thread
entered the
BLOCKED
state.
-
getWaitedTime
public long getWaitedTime()Returns the approximate accumulated elapsed time (in milliseconds) that the thread associated with thisThreadInfo
has waited for notification since thread contention monitoring is enabled. I.e. the total accumulated time the thread has been in theWAITING
orTIMED_WAITING
state since thread contention monitoring is enabled. This method returns-1
if thread contention monitoring is disabled.The Java virtual machine may measure the time with a high resolution timer. This statistic is reset when the thread contention monitoring is reenabled.
- Returns:
- the approximate accumulated elapsed time in milliseconds
that a thread has been in the
WAITING
orTIMED_WAITING
state;-1
if thread contention monitoring is disabled. - Throws:
UnsupportedOperationException
- if the Java virtual machine does not support this operation.- See Also:
ThreadMXBean.isThreadContentionMonitoringSupported()
,ThreadMXBean.setThreadContentionMonitoringEnabled(boolean)
-
getWaitedCount
public long getWaitedCount()Returns the total number of times that the thread associated with thisThreadInfo
waited for notification. I.e. the number of times that a thread has been in theWAITING
orTIMED_WAITING
state.- Returns:
- the total number of times that the thread
was in the
WAITING
orTIMED_WAITING
state.
-
getLockInfo
Returns theLockInfo
of an object for which the thread associated with thisThreadInfo
is blocked waiting. A thread can be blocked waiting for one of the following:- an object monitor to be acquired for entering or reentering
a synchronization block/method.
The thread is in theBLOCKED
state waiting to enter thesynchronized
statement or method. - an object monitor to be notified by another thread.
The thread is in theWAITING
orTIMED_WAITING
state due to a call to theObject.wait
method. - a synchronization object responsible for the thread parking.
The thread is in theWAITING
orTIMED_WAITING
state due to a call to theLockSupport.park
method. The synchronization object is the object returned fromLockSupport.getBlocker
method. Typically it is an ownable synchronizer or aCondition
.
This method returns
null
if the thread is not in any of the above conditions.- Returns:
LockInfo
of an object for which the thread is blocked waiting if any;null
otherwise.- Since:
- 1.6
- an object monitor to be acquired for entering or reentering
a synchronization block/method.
-
getLockName
Returns thestring representation
of an object for which the thread associated with thisThreadInfo
is blocked waiting. This method is equivalent to calling:getLockInfo().toString()
This method will return
null
if this thread is not blocked waiting for any object or if the object is not owned by any thread.- Returns:
- the string representation of the object on which
the thread is blocked if any;
null
otherwise. - See Also:
getLockInfo()
-
getLockOwnerId
public long getLockOwnerId()Returns the ID of the thread which owns the object for which the thread associated with thisThreadInfo
is blocked waiting. This method will return-1
if this thread is not blocked waiting for any object or if the object is not owned by any thread.- Returns:
- the thread ID of the owner thread of the object
this thread is blocked on;
-1
if this thread is not blocked or if the object is not owned by any thread. - See Also:
getLockInfo()
-
getLockOwnerName
Returns the name of the thread which owns the object for which the thread associated with thisThreadInfo
is blocked waiting. This method will returnnull
if this thread is not blocked waiting for any object or if the object is not owned by any thread.- Returns:
- the name of the thread that owns the object
this thread is blocked on;
null
if this thread is not blocked or if the object is not owned by any thread. - See Also:
getLockInfo()
-
getStackTrace
Returns the stack trace of the thread associated with thisThreadInfo
. If no stack trace was requested for this thread info, this method will return a zero-length array. If the returned array is of non-zero length then the first element of the array represents the top of the stack, which is the most recent method invocation in the sequence. The last element of the array represents the bottom of the stack, which is the least recent method invocation in the sequence.Some Java virtual machines may, under some circumstances, omit one or more stack frames from the stack trace. In the extreme case, a virtual machine that has no stack trace information concerning the thread associated with this
ThreadInfo
is permitted to return a zero-length array from this method.- Returns:
- an array of
StackTraceElement
objects of the thread.
-
isSuspended
public boolean isSuspended()Tests if the thread associated with thisThreadInfo
is suspended. This method returnstrue
ifThread.suspend()
has been called.- Returns:
true
if the thread is suspended;false
otherwise.
-
isInNative
public boolean isInNative()Tests if the thread associated with thisThreadInfo
is executing native code via the Java Native Interface (JNI). The JNI native code does not include the virtual machine support code or the compiled native code generated by the virtual machine.- Returns:
true
if the thread is executing native code;false
otherwise.
-
isDaemon
public boolean isDaemon()Tests if the thread associated with thisThreadInfo
is a daemon thread.- Returns:
true
if the thread is a daemon thread,false
otherwise.- Since:
- 9
- See Also:
Thread.isDaemon()
-
getPriority
public int getPriority()Returns the thread priority of the thread associated with thisThreadInfo
.- Returns:
- The priority of the thread associated with this
ThreadInfo
. - Since:
- 9
-
toString
Returns a string representation of this thread info. The format of this string depends on the implementation. The returned string will typically include the thread name, the thread ID, its state, and a stack trace if any. -
from
Returns aThreadInfo
object represented by the givenCompositeData
. ACompositeData
representing aThreadInfo
of version N must contain all of the attributes defined in version ≤ N unless specified otherwise. The same rule applies the composite type of the givenCompositeData
and transitively to attributes whose type or component type isCompositeType
.A
CompositeData
representingThreadInfo
of version N contains"stackTrace"
attribute and"lockedMonitors"
attribute representing an array ofStackTraceElement
and an array ofMonitorInfo
respectively and their types are of version N. The"lockedStackFrame"
attribute inMonitorInfo
's composite type must representStackTraceElement
of the same version N. Otherwise, this method will throwIllegalArgumentException
.Attribute Name Type Since threadId java.lang.Long
5 threadName java.lang.String
5 threadState java.lang.String
5 suspended java.lang.Boolean
5 inNative java.lang.Boolean
5 blockedCount java.lang.Long
5 blockedTime java.lang.Long
5 waitedCount java.lang.Long
5 waitedTime java.lang.Long
5 lockName java.lang.String
5 lockOwnerId java.lang.Long
5 lockOwnerName java.lang.String
5 stackTrace javax.management.openmbean.CompositeData[]
, each element is aCompositeData
representingStackTraceElement
as specified below.5 lockInfo javax.management.openmbean.CompositeData
- the mapped type forLockInfo
as specified in theLockInfo.from(javax.management.openmbean.CompositeData)
method.If the given
CompositeData
does not contain this attribute, theLockInfo
object will be constructed from the value of thelockName
attribute.6 lockedMonitors javax.management.openmbean.CompositeData[]
whose element type is the mapped type forMonitorInfo
as specified in theMonitorInfo.from
method.If the given
CompositeData
does not contain this attribute, this attribute will be set to an empty array.6 lockedSynchronizers javax.management.openmbean.CompositeData[]
whose element type is the mapped type forLockInfo
as specified in theLockInfo.from(javax.management.openmbean.CompositeData)
method.If the given
CompositeData
does not contain this attribute, this attribute will be set to an empty array.6 daemon java.lang.Boolean
If the given
CompositeData
does not contain this attribute, this attribute will be set tofalse
.9 priority java.lang.Integer
If the given
CompositeData
does not contain this attribute, This attribute will be set toThread.NORM_PRIORITY
.9 CompositeData
representingStackTraceElement
of version N must contain all of the attributes defined in version ≤ N unless specified otherwise.Attribute Name Type Since classLoaderName java.lang.String
9 moduleName java.lang.String
9 moduleVersion java.lang.String
9 className java.lang.String
5 methodName java.lang.String
5 fileName java.lang.String
5 lineNumber java.lang.Integer
5 nativeMethod java.lang.Boolean
5 - Parameters:
cd
-CompositeData
representing aThreadInfo
- Returns:
- a
ThreadInfo
object represented bycd
ifcd
is notnull
;null
otherwise. - Throws:
IllegalArgumentException
- if the givencd
and its composite type does not contain all of the attributes defined for aThreadInfo
of a specific runtime version.
-
getLockedMonitors
Returns an array ofMonitorInfo
objects, each of which represents an object monitor currently locked by the thread associated with thisThreadInfo
. If no locked monitor was requested for this thread info or no monitor is locked by the thread, this method will return a zero-length array.- Returns:
- an array of
MonitorInfo
objects representing the object monitors locked by the thread. - Since:
- 1.6
-
getLockedSynchronizers
Returns an array ofLockInfo
objects, each of which represents an ownable synchronizer currently locked by the thread associated with thisThreadInfo
. If no locked synchronizer was requested for this thread info or no synchronizer is locked by the thread, this method will return a zero-length array.- Returns:
- an array of
LockInfo
objects representing the ownable synchronizers locked by the thread. - Since:
- 1.6
-