|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.lang.management.ThreadInfo
public class ThreadInfo
A class which maintains information about a particular thread. This information includes:
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()
.
ThreadMXBean.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 Thread.State.BLOCKED state. |
long |
getBlockedTime()
Returns the accumulated number of milliseconds this thread has been in the Thread.State.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 Thread.State.WAITING
or Thread.State.TIMED_WAITING state. |
long |
getWaitedTime()
Returns the accumulated number of milliseconds this thread has been in the Thread.State.WAITING or
Thread.State.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 Thread.suspend() . |
String |
toString()
Returns a String representation of
this ThreadInfo object. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Method Detail |
---|
public static ThreadInfo from(CompositeData data)
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 |
data
- the composite data structure to take values from.
null
if the data structure was also null
.
IllegalArgumentException
- if the composite data structure
does not match the structure
outlined above.public long getBlockedCount()
Thread.State.BLOCKED
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 to
Object.wait()
.
public long getBlockedTime()
Returns the accumulated number of milliseconds this
thread has been in the
Thread.State.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
Object.wait()
.
Use of this method requires virtual machine support for thread contention monitoring and for this support to be enabled.
UnsupportedOperationException
- if the virtual
machine does not
support contention
monitoring.ThreadMXBean.isThreadContentionMonitoringEnabled()
,
ThreadMXBean.isThreadContentionMonitoringSupported()
public MonitorInfo[] getLockedMonitors()
MonitorInfo
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 this ThreadInfo
object, a zero-length
array will be returned.
public LockInfo[] getLockedSynchronizers()
LockInfo
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 this ThreadInfo
object, a zero-length
array will be returned.
public LockInfo getLockInfo()
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
Object.wait()
.WAITING
or
TIMED_WAITING
state due to a call
to LockSupport.park()
.
The lock is the return value of
java.util.concurrent.locks.LockSupport#getBlocker()
.
LockInfo
object representing the lock on
which the thread is blocked, or null
if
the thread isn't blocked.getLockName()
public String 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()
null
if
the thread is not blocked.public long getLockOwnerId()
public String getLockOwnerName()
null
is returned if either this thread is not blocked,
or the lock is not held by any other thread.
null
if the thread is not blocked or the lock is not
held by another thread.public StackTraceElement[] getStackTrace()
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.
StackTraceElement
s
representing the trace of this thread.public long getThreadId()
ThreadInfo
.
public String getThreadName()
ThreadInfo
.
public Thread.State getThreadState()
ThreadInfo
.
public long getWaitedCount()
Thread.State.WAITING
or Thread.State.TIMED_WAITING
state.
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.
public long getWaitedTime()
Returns the accumulated number of milliseconds this
thread has been in the
Thread.State.WAITING
or
Thread.State.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.
UnsupportedOperationException
- if the virtual
machine does not
support contention
monitoring.ThreadMXBean.isThreadContentionMonitoringEnabled()
,
ThreadMXBean.isThreadContentionMonitoringSupported()
public boolean isInNative()
public boolean isSuspended()
Thread.suspend()
.
public String toString()
String
representation of
this ThreadInfo
object. This takes the form
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).
toString
in class Object
Object.getClass()
,
Object.hashCode()
,
Class.getName()
,
Integer.toHexString(int)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |