public class ThreadInfo extends Object
Thread information. ThreadInfo
contains the information about a thread including:
Object.wait
method, orLockSupport.park
call.thread contention monitoring
was enabled. Some Java virtual machine implementation may not support this. The ThreadMXBean.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.
ThreadInfo
is mapped to a CompositeData
with attributes as specified in the from
method.ThreadMXBean.getThreadInfo(long)
, ThreadMXBean.dumpAllThreads(boolean, boolean)
public long getThreadId()
Returns the ID of the thread associated with this ThreadInfo
.
public String getThreadName()
Returns the name of the thread associated with this ThreadInfo
.
public Thread.State getThreadState()
Returns the state of the thread associated with this ThreadInfo
.
Thread.State
of the associated thread.public long getBlockedTime()
Returns the approximate accumulated elapsed time (in milliseconds) that the thread associated with this ThreadInfo
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 the BLOCKED
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.
BLOCKED
state; -1
if thread contention monitoring is disabled.UnsupportedOperationException
- if the Java virtual machine does not support this operation.ThreadMXBean.isThreadContentionMonitoringSupported()
, ThreadMXBean.setThreadContentionMonitoringEnabled(boolean)
public long getBlockedCount()
Returns the total number of times that the thread associated with this ThreadInfo
blocked to enter or reenter a monitor. I.e. the number of times a thread has been in the BLOCKED
state.
BLOCKED
state.public long getWaitedTime()
Returns the approximate accumulated elapsed time (in milliseconds) that the thread associated with this ThreadInfo
has waited for notification since thread contention monitoring is enabled. I.e. the total accumulated time the thread has been in the WAITING
or TIMED_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.
WAITING
or TIMED_WAITING
state; -1
if thread contention monitoring is disabled.UnsupportedOperationException
- if the Java virtual machine does not support this operation.ThreadMXBean.isThreadContentionMonitoringSupported()
, ThreadMXBean.setThreadContentionMonitoringEnabled(boolean)
public long getWaitedCount()
Returns the total number of times that the thread associated with this ThreadInfo
waited for notification. I.e. the number of times that a thread has been in the WAITING
or TIMED_WAITING
state.
WAITING
or TIMED_WAITING
state.public LockInfo getLockInfo()
Returns the LockInfo
of an object for which the thread associated with this ThreadInfo
is blocked waiting. A thread can be blocked waiting for one of the following:
BLOCKED
state waiting to enter the synchronized
statement or method.
WAITING
or TIMED_WAITING
state due to a call to the Object.wait
method.
WAITING
or TIMED_WAITING
state due to a call to the LockSupport.park
method. The synchronization object is the object returned from LockSupport.getBlocker
method. Typically it is an ownable synchronizer or a Condition
.This method returns null
if the thread is not in any of the above conditions.
LockInfo
of an object for which the thread is blocked waiting if any; null
otherwise.public String getLockName()
Returns the string representation
of an object for which the thread associated with this ThreadInfo
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.
null
otherwise.getLockInfo()
public long getLockOwnerId()
Returns the ID of the thread which owns the object for which the thread associated with this ThreadInfo
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.
-1
if this thread is not blocked or if the object is not owned by any thread.getLockInfo()
public String getLockOwnerName()
Returns the name of the thread which owns the object for which the thread associated with this ThreadInfo
is blocked waiting. 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.
null
if this thread is not blocked or if the object is not owned by any thread.getLockInfo()
public StackTraceElement[] getStackTrace()
Returns the stack trace of the thread associated with this ThreadInfo
. 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.
StackTraceElement
objects of the thread.public boolean isSuspended()
Tests if the thread associated with this ThreadInfo
is suspended. This method returns true
if Thread.suspend()
has been called.
true
if the thread is suspended; false
otherwise.public boolean isInNative()
Tests if the thread associated with this ThreadInfo
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.
true
if the thread is executing native code; false
otherwise.public String 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.
public static ThreadInfo from(CompositeData cd)
ThreadInfo
object represented by the given CompositeData
. The given CompositeData
must contain the following attributes unless otherwise specified below: Attribute 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 | ||||||||||||
lockInfo |
javax.management.openmbean.CompositeData - the mapped type for LockInfo as specified in the LockInfo.from(javax.management.openmbean.CompositeData) method. If | ||||||||||||
lockName | java.lang.String | ||||||||||||
lockOwnerId | java.lang.Long | ||||||||||||
lockOwnerName | java.lang.String | ||||||||||||
stackTrace |
javax.management.openmbean.CompositeData[] Each element is a
| ||||||||||||
lockedMonitors |
javax.management.openmbean.CompositeData[] whose element type is the mapped type for MonitorInfo as specified in the Monitor.from method. If | ||||||||||||
lockedSynchronizers |
javax.management.openmbean.CompositeData[] whose element type is the mapped type for LockInfo as specified in the LockInfo.from(javax.management.openmbean.CompositeData) method. If |
cd
- CompositeData
representing a ThreadInfo
ThreadInfo
object represented by cd
if cd
is not null
; null
otherwise.IllegalArgumentException
- if cd
does not represent a ThreadInfo
with the attributes described above.public MonitorInfo[] getLockedMonitors()
Returns an array of MonitorInfo
objects, each of which represents an object monitor currently locked by the thread associated with this ThreadInfo
. 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.
MonitorInfo
objects representing the object monitors locked by the thread.public LockInfo[] getLockedSynchronizers()
Returns an array of LockInfo
objects, each of which represents an ownable synchronizer currently locked by the thread associated with this ThreadInfo
. 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.
LockInfo
objects representing the ownable synchronizers locked by the thread.
© 1993–2017, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.