JavaTM 2 Platform
Standard Ed. 5.0

java.lang.management
Class ThreadInfo

java.lang.Object
  extended by java.lang.management.ThreadInfo

public class ThreadInfo
extends Object

Thread information. ThreadInfo contains the information about a thread including:

General thread information

Execution information

Synchronization statistics

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.isThreadContentionMonitoringSupported()

Method Summary
static ThreadInfo from(CompositeData cd)
          Returns a ThreadInfo object represented by the given CompositeData.
 long getBlockedCount()
          Returns the total number of times that the thread associated with this ThreadInfo blocked to enter or reenter a monitor.
 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.
 String getLockName()
          Returns the string representation of the monitor lock that the thread associated with this ThreadInfo is blocked to enter or waiting to be notified through the Object.wait method.
 long getLockOwnerId()
          Returns the ID of the thread which holds the monitor lock of an object on which the thread associated with this ThreadInfo is blocking.
 String getLockOwnerName()
          Returns the name of the thread which holds the monitor lock of an object on which the thread associated with this ThreadInfo is blocking.
 StackTraceElement[] getStackTrace()
          Returns the stack trace of the thread associated with this ThreadInfo.
 long getThreadId()
          Returns the ID of the thread associated with this ThreadInfo.
 String getThreadName()
          Returns the name of the thread associated with this ThreadInfo.
 Thread.State getThreadState()
          Returns the state of the thread associated with this ThreadInfo.
 long getWaitedCount()
          Returns the total number of times that the thread associated with this ThreadInfo waited for notification.
 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.
 boolean isInNative()
          Tests if the thread associated with this ThreadInfo is executing native code via the Java Native Interface (JNI).
 boolean isSuspended()
          Tests if the thread associated with this ThreadInfo is suspended.
 String toString()
          Returns a string representation of this thread info.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Method Detail

getThreadId

public long getThreadId()
Returns the ID of the thread associated with this ThreadInfo.

Returns:
the ID of the associated thread.

getThreadName

public String getThreadName()
Returns the name of the thread associated with this ThreadInfo.

Returns:
the name of the associated thread.

getThreadState

public Thread.State getThreadState()
Returns the state of the thread associated with this ThreadInfo.

Returns:
Thread.State of the associated thread.

getBlockedTime

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.

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 this ThreadInfo blocked to enter or reenter a monitor. I.e. the number of times a thread has been in the BLOCKED 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 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.

Returns:
the approximate accumulated elapsed time in milliseconds that a thread has been in the WAITING or TIMED_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 this ThreadInfo waited for notification. I.e. the number of times that a thread has been in the WAITING or TIMED_WAITING state.

Returns:
the total number of times that the thread was in the WAITING or TIMED_WAITING state.

getLockName

public String getLockName()
Returns the string representation of the monitor lock that the thread associated with this ThreadInfo is blocked to enter or waiting to be notified through the Object.wait method. The returned string representation of a monitor lock consists of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the identity hash code of the object. The returned string may not be unique depending on the implementation of the System.identityHashCode(java.lang.Object) method. This method returns a string equals to the value of:
 lock.getClass().getName() + '@' + Integer.toHexString(System.identityHashCode(lock))
 
where lock is the monitor lock object.

If the thread is not blocking to enter on any monitor object, or is not waiting on a monitor object for notification in a Object.wait call, this method returns null.

Returns:
the string representation of the monitor lock that the thread is blocking to enter or waiting to be notified through the Object.wait method if any; null otherwise.

getLockOwnerId

public long getLockOwnerId()
Returns the ID of the thread which holds the monitor lock of an object on which the thread associated with this ThreadInfo is blocking. This method will return -1 if this thread is not blocked or waiting on any monitor, or if the monitor lock is not held by any thread.

Returns:
the thread ID of the owner thread of the monitor lock of the object this thread is blocking on; -1 if this thread is not blocked or waiting on any monitor, or if the monitor lock is not held by any thread.
See Also:
getLockName()

getLockOwnerName

public String getLockOwnerName()
Returns the name of the thread which holds the monitor lock of an object on which the thread associated with this ThreadInfo is blocking. This method will return null if this thread is not blocked or waiting on any monitor, or if the monitor lock is not held by any thread.

Returns:
the name of the thread that holds the monitor lock of the object this thread is blocking on; null if this thread is not blocked or waiting on any monitor, or if the monitor lock is not held by any thread.
See Also:
getLockName()

getStackTrace

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.

Returns:
an array of StackTraceElement objects of the thread.

isSuspended

public boolean isSuspended()
Tests if the thread associated with this ThreadInfo is suspended. This method returns true if Thread.suspend() has been called.

Returns:
true if the thread is suspended; false otherwise.

isInNative

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.

Returns:
true if the thread is executing native code; false otherwise.

toString

public String toString()
Returns a string representation of this thread info.

Overrides:
toString in class Object
Returns:
a string representation of this thread info.

from

public static ThreadInfo from(CompositeData cd)
Returns a ThreadInfo object represented by the given CompositeData. The given CompositeData must contain the following attributes:
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
lockName java.lang.String
lockOwnerId java.lang.Long
lockOwnerName java.lang.String
stackTrace javax.management.openmbean.CompositeData[]

Each element is a CompositeData representing StackTraceElement containing the following attributes:

Attribute Name Type
className java.lang.String
methodName java.lang.String
fileName java.lang.String
lineNumber java.lang.Integer
nativeMethod java.lang.Boolean

Parameters:
cd - CompositeData representing a ThreadInfo
Returns:
a ThreadInfo object represented by cd if cd is not null; null otherwise.
Throws:
IllegalArgumentException - if cd does not represent a ThreadInfo with the attributes described above.

JavaTM 2 Platform
Standard Ed. 5.0

Submit a bug or feature
For further API reference and developer documentation, see Java 2 SDK SE Developer Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.