java.lang.management
public class ThreadInfo extends Object
A class which maintains information about a particular thread. This information includes:
Since: 1.5
See Also: isThreadContentionMonitoringSupported
Method Summary | |
---|---|
static ThreadInfo | from(CompositeData data) Returns a ThreadInfo instance using the values given in the supplied CompositeData object. |
long | getBlockedCount()
Returns the number of times this thread has been
in the BLOCKED state.
|
long | getBlockedTime() Returns the accumulated number of milliseconds this thread has been in the BLOCKED state since thread contention monitoring was last enabled. |
MonitorInfo[] | getLockedMonitors()
Returns an array of MonitorInfo objects representing
information on the locks on object monitors held by the thread.
|
LockInfo[] | getLockedSynchronizers()
Returns an array of LockInfo objects representing
information on the locks on ownable synchronizers held by the thread.
|
LockInfo | getLockInfo() Returns a LockInfo object representing the lock on which this thread is blocked. |
String | getLockName() Returns a String representation of the lock on which this thread is blocked. |
long | getLockOwnerId()
Returns the identifier of the thread which owns the
monitor lock this thread is waiting for. |
String | getLockOwnerName()
Returns the name of the thread which owns the
monitor lock this thread is waiting for. |
StackTraceElement[] | getStackTrace() Returns the stack trace of this thread to the depth specified on creation of this ThreadInfo object. |
long | getThreadId()
Returns the identifier of the thread associated with
this instance of ThreadInfo.
|
String | getThreadName()
Returns the name of the thread associated with
this instance of ThreadInfo.
|
Thread.State | getThreadState()
Returns the state of the thread associated with
this instance of ThreadInfo.
|
long | getWaitedCount()
Returns the number of times this thread has been
in the WAITING
or TIMED_WAITING state.
|
long | getWaitedTime() Returns the accumulated number of milliseconds this thread has been in the WAITING or TIMED_WAITING state, since thread contention monitoring was last enabled. |
boolean | isInNative()
Returns true if the thread is in a native method. |
boolean | isSuspended()
Returns true if the thread has been suspended using
suspend.
|
String | toString()
Returns a String representation of
this ThreadInfo object. |
Returns a ThreadInfo instance using the values given in the supplied CompositeData object. The composite data instance should contain the following attributes with the specified types:
Name | Type |
threadId | java.lang.Long |
threadName | java.lang.String |
threadState | java.lang.String |
suspended | java.lang.Boolean |
inNative | java.lang.Boolean |
blockedCount | java.lang.Long |
blockedTime | java.lang.Long |
waitedCount | java.lang.Long |
waitedTime | java.lang.Long |
lockName | java.lang.String |
lockOwnerId | java.lang.Long |
lockOwnerName | java.lang.String |
stackTrace | javax.management.openmbean.CompositeData[] |
The stack trace is further described as:
Name | Type |
className | java.lang.String |
methodName | java.lang.String |
fileName | java.lang.String |
lineNumber | java.lang.Integer |
nativeMethod | java.lang.Boolean |
Parameters: data the composite data structure to take values from.
Returns: a new instance containing the values from the
composite data structure, or null
if the data structure was also null
.
Throws: IllegalArgumentException if the composite data structure does not match the structure outlined above.
Returns: the number of times this thread has been blocked.
Returns the accumulated number of milliseconds this thread has been in the BLOCKED state since thread contention monitoring was last enabled. A thread enters this state when it is waiting to obtain an object's monitor. This may occur either on entering a synchronized method for the first time, or on re-entering it following a call to wait.
Use of this method requires virtual machine support for thread contention monitoring and for this support to be enabled.
Returns: the accumulated time (in milliseconds) that this thread has spent in the blocked state, since thread contention monitoring was enabled, or -1 if thread contention monitoring is disabled.
Throws: UnsupportedOperationException if the virtual machine does not support contention monitoring.
See Also: isThreadContentionMonitoringEnabled isThreadContentionMonitoringSupported
Returns: information on object monitors locked by this thread.
Returns: information on ownable synchronizers locked by this thread.
Returns a LockInfo object representing the
lock on which this thread is blocked. If the thread
is not blocked, this method returns null
.
The thread may be blocked due to one of three reasons:
BLOCKED
state
waiting to acquire an object monitor in order to enter
a synchronized method or block.WAITING
or
TIMED_WAITING
state due to a call to
wait.WAITING
or
TIMED_WAITING
state due to a call
to java.util.concurrent.locks.LockSupport#park().
The lock is the return value of
java.util.concurrent.locks.LockSupport#getBlocker().Returns: a LockInfo object representing the lock on
which the thread is blocked, or null
if
the thread isn't blocked.
Since: 1.6
See Also: getLockName
Returns a String representation of
the lock on which this thread is blocked. If
the thread is not blocked, this method returns
null
.
The returned String is constructed
using the class name and identity hashcode (usually
the memory address of the object) of the lock. The
two are separated by the '@' character, and the identity
hashcode is represented in hexadecimal. Thus, for a
lock, l
, the returned value is
the result of concatenating
l.getClass().getName()
, "@"
and
Integer.toHexString(System.identityHashCode(l))
.
The value is only unique to the extent that the identity
hash code is also unique. The value is the same as would
be returned by getLockInfo().toString()
Returns: a string representing the lock on which this
thread is blocked, or null
if
the thread is not blocked.
Returns: the thread identifier of thread holding the lock this thread is waiting for, or -1 if the thread is not blocked or the lock is not held by another thread.
null
is returned if either this thread is not blocked,
or the lock is not held by any other thread.
Returns: the thread identifier of thread holding the lock
this thread is waiting for, or null
if the thread is not blocked or the lock is not
held by another thread.
Returns the stack trace of this thread to the depth specified on creation of this ThreadInfo object. If the depth is zero, an empty array will be returned. For non-zero arrays, the elements start with the most recent trace at position zero. The bottom of the stack represents the oldest method invocation which meets the depth requirements.
Some virtual machines may not be able to return stack trace information for a thread. In these cases, an empty array will also be returned.
Returns: an array of StackTraceElements representing the trace of this thread.
Returns: the thread's identifier.
Returns: the thread's name.
Returns: the thread's state.
java.lang.Object.wait()
,
java.lang.Object.join()
or
java.lang.concurrent.locks.LockSupport.park()
,
either with an infinite or timed delay, respectively.
Returns: the number of times this thread has been waiting.
Returns the accumulated number of milliseconds this
thread has been in the
WAITING or
TIMED_WAITING state,
since thread contention monitoring was last enabled.
A thread enters one of these states when it is waiting
due to a call to java.lang.Object.wait()
,
java.lang.Object.join()
or
java.lang.concurrent.locks.LockSupport.park()
,
either with an infinite or timed delay, respectively.
Use of this method requires virtual machine support for thread contention monitoring and for this support to be enabled.
Returns: the accumulated time (in milliseconds) that this thread has spent in one of the waiting states, since thread contention monitoring was enabled, or -1 if thread contention monitoring is disabled.
Throws: UnsupportedOperationException if the virtual machine does not support contention monitoring.
See Also: isThreadContentionMonitoringEnabled isThreadContentionMonitoringSupported
Returns: true if the thread is in a native method, false otherwise.
Returns: true if the thread is suspended, false otherwise.
java.lang.management.ThreadInfo[id=tid, name=n,
state=s, blockedCount=bc, waitedCount=wc, isInNative=iin,
isSuspended=is]
, where tid
is
the thread identifier, n
is the
thread name, s
is the thread state,
bc
is the blocked state count,
wc
is the waiting state count and
iin
and is
are boolean
flags to indicate the thread is in native code or
suspended respectively. If the thread is blocked,
lock=l, lockOwner=lo
is also included,
where l
is the lock waited for, and
lo
is the thread which owns the lock
(or null if there is no owner).
Returns: the string specified above.