Prev Class | Next Class | Frames | No Frames |
Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Object
java.lang.management.ThreadInfo
public class ThreadInfo
extends Object
Object.wait()
has been called while the thread
was within a method of that object.Object.wait()
call.Object.wait()
call.
The availability of these statistics depends on the virtual machine's
support for thread contention monitoring (see
ThreadMXBean.isThreadContentionMonitoringSupported()
.Method Summary | |
static ThreadInfo |
|
long |
|
long |
|
LockInfo |
|
String |
|
long |
|
String |
|
MonitorInfo[] |
|
LockInfo[] |
|
StackTraceElement[] |
|
long |
|
String |
|
Thread.State |
|
long |
|
long |
|
boolean |
|
boolean |
|
String |
|
Methods inherited from class java.lang.Object | |
clone , equals , extends Object> getClass , finalize , hashCode , notify , notifyAll , toString , wait , wait , wait |
public static ThreadInfo from(CompositeData data)
Returns aThreadInfo
instance using the values given in the suppliedCompositeData
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 alsonull
.
- Throws:
IllegalArgumentException
- if the composite data structure does not match the structure outlined above.
public long getBlockedCount()
Returns the number of times this thread has been in theThread.State
state. 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 toObject.wait()
.
- Returns:
- the number of times this thread has been blocked.
public long getBlockedTime()
Returns the accumulated number of milliseconds this thread has been in theThread.State
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 toObject.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.
public LockInfo getLockInfo()
Returns aLockInfo
object representing the lock on which this thread is blocked. If the thread is not blocked, this method returnsnull
.The thread may be blocked due to one of three reasons:
- The thread is in the
BLOCKED
state waiting to acquire an object monitor in order to enter a synchronized method or block.- The thread is in the
WAITING
orTIMED_WAITING
state due to a call toObject.wait()
.- The thread is in the
WAITING
orTIMED_WAITING
state due to a call tojava.util.concurrent.locks.LockSupport.park()
. The lock is the return value ofjava.util.concurrent.locks.LockSupport.getBlocker()
.
- Returns:
- a
LockInfo
object representing the lock on which the thread is blocked, ornull
if the thread isn't blocked.
- Since:
- 1.6
- See Also:
getLockName()
public String getLockName()
Returns aString
representation of the lock on which this thread is blocked. If the thread is not blocked, this method returnsnull
.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 concatenatingl.getClass().getName()
,"@"
andInteger.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 bygetLockInfo().toString()
- Returns:
- a string representing the lock on which this thread is blocked, or
null
if the thread is not blocked.
public long getLockOwnerId()
Returns the identifier of the thread which owns the monitor lock this thread is waiting for. -1 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 -1 if the thread is not blocked or the lock is not held by another thread.
public String getLockOwnerName()
Returns the name of the thread which owns the monitor lock this thread is waiting for.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.
public MonitorInfo[] getLockedMonitors()
Returns an array ofMonitorInfo
objects representing information on the locks on object monitors held by the thread. If no locks are held, or such information was not requested on creating thisThreadInfo
object, a zero-length array will be returned.
- Returns:
- information on object monitors locked by this thread.
public LockInfo[] getLockedSynchronizers()
Returns an array ofLockInfo
objects representing information on the locks on ownable synchronizers held by the thread. If no locks are held, or such information was not requested on creating thisThreadInfo
object, a zero-length array will be returned.
- Returns:
- information on ownable synchronizers locked by this thread.
public StackTraceElement[] getStackTrace()
Returns the stack trace of this thread to the depth specified on creation of thisThreadInfo
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
StackTraceElement
s representing the trace of this thread.
public long getThreadId()
Returns the identifier of the thread associated with this instance ofThreadInfo
.
- Returns:
- the thread's identifier.
public String getThreadName()
Returns the name of the thread associated with this instance ofThreadInfo
.
- Returns:
- the thread's name.
public Thread.State getThreadState()
Returns the state of the thread associated with this instance ofThreadInfo
.
- Returns:
- the thread's state.
public long getWaitedCount()
Returns the number of times this thread has been in theThread.State
orThread.State
state. A thread enters one of these states when it is waiting due to a call tojava.lang.Object.wait()
,java.lang.Object.join()
orjava.lang.concurrent.locks.LockSupport.park()
, either with an infinite or timed delay, respectively.
- Returns:
- the number of times this thread has been waiting.
public long getWaitedTime()
Returns the accumulated number of milliseconds this thread has been in theThread.State
orThread.State
state, since thread contention monitoring was last enabled. A thread enters one of these states when it is waiting due to a call tojava.lang.Object.wait()
,java.lang.Object.join()
orjava.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.
public boolean isInNative()
Returns true if the thread is in a native method. This excludes native code which forms part of the virtual machine itself, or which results from Just-In-Time compilation.
- Returns:
- true if the thread is in a native method, false otherwise.
public boolean isSuspended()
Returns true if the thread has been suspended usingThread.suspend()
.
- Returns:
- true if the thread is suspended, false otherwise.
public String toString()
Returns aString
representation of thisThreadInfo
object. This takes the formjava.lang.management.ThreadInfo[id=tid, name=n, state=s, blockedCount=bc, waitedCount=wc, isInNative=iin, isSuspended=is]
, wheretid
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 andiin
andis
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, wherel
is the lock waited for, andlo
is the thread which owns the lock (or null if there is no owner).
- Returns:
- the string specified above.