com.bea.jvm
Interface ThreadSnapshot

All Superinterfaces:
Describable

public interface ThreadSnapshot
extends Describable

Interface representing a snapshot of a thread's state at a given time. Note that when this object is created, the thread and state it represents may have died and been garbage collected already.

Author:
Calle Wilund, Marcus Hirt

Nested Class Summary
static interface ThreadSnapshot.Monitor
           Interface representing a monitor from a specific thread snapshot.
 
Field Summary
static int THREAD_STATE_ACTIVE
          Thread state for an active thread.
static int THREAD_STATE_IO
          Thread state for a thread waiting for IO.
static int THREAD_STATE_LOCKED
          Thread state for a thread blocked trying to take a lock.
static int THREAD_STATE_SUSPENDED
          Thread state for a suspended thread.
static int THREAD_STATE_WAITING
          Thread state for a thread waiting on notification.
 
Method Summary
 ThreadSnapshot.Monitor getBlockedOnMonitor()
          Return the monitor this thread is blocked on, or null if none.
 java.lang.String getDescription()
          Returns the snapshot as a String.
 int getID()
          Returns the id of the thread that the snapshot was created for.
 java.lang.String getName()
          Returns the name of the thread that this snapshot was created from.
 int getPriority()
          Returns the priority level of the thread at the time of the snapshot.
 java.util.List getStackTrace()
          Returns a list of CallTraceElement.
 int getState()
          Returns the thread state (or as close as we can describe using the THREAD_STATE_ constants).
 ThreadSnapshot.Monitor getWaitingOnMonitor()
          Return the monitor this thread is waiting on, or null if none.
 boolean isDaemon()
          Returns true if this thread is a daemon thread.
 

Field Detail

THREAD_STATE_ACTIVE

public static final int THREAD_STATE_ACTIVE
Thread state for an active thread.

See Also:
Constant Field Values

THREAD_STATE_IO

public static final int THREAD_STATE_IO
Thread state for a thread waiting for IO.

See Also:
Constant Field Values

THREAD_STATE_WAITING

public static final int THREAD_STATE_WAITING
Thread state for a thread waiting on notification.

See Also:
Constant Field Values

THREAD_STATE_LOCKED

public static final int THREAD_STATE_LOCKED
Thread state for a thread blocked trying to take a lock.

See Also:
Constant Field Values

THREAD_STATE_SUSPENDED

public static final int THREAD_STATE_SUSPENDED
Thread state for a suspended thread.

See Also:
Constant Field Values
Method Detail

getName

public java.lang.String getName()
Returns the name of the thread that this snapshot was created from.

Returns:
the name of the thread.

getDescription

public java.lang.String getDescription()
Returns the snapshot as a String. This equals doing toString() on the snapshot.

Specified by:
getDescription in interface Describable
Returns:
the snapshot as a String.
See Also:
Describable.getDescription()

getState

public int getState()
Returns the thread state (or as close as we can describe using the THREAD_STATE_ constants).

Returns:
the thread state.
See Also:
THREAD_STATE_ACTIVE, THREAD_STATE_IO, THREAD_STATE_WAITING, THREAD_STATE_LOCKED, THREAD_STATE_SUSPENDED

getID

public int getID()
Returns the id of the thread that the snapshot was created for.

Returns:
the id of the thread.

isDaemon

public boolean isDaemon()
Returns true if this thread is a daemon thread.

Returns:
true if this thread is a deamon thread.

getPriority

public int getPriority()
Returns the priority level of the thread at the time of the snapshot.

Returns:
the priority level of the thread at the time of the snapshot.

getStackTrace

public java.util.List getStackTrace()
Returns a list of CallTraceElement.

Returns:
a list of CallTraceElement.
See Also:
CallTraceElement

getBlockedOnMonitor

public ThreadSnapshot.Monitor getBlockedOnMonitor()
Return the monitor this thread is blocked on, or null if none. A thread is blocked on a monitor if it is trying to enter a synchronized-block but the monitor is already taken by another thread. This thread then gets "blocked" on this monitor. If this is the case, this method return the monitor the thread is blocked on.

Returns:
the monitor this thread is blocked on, or null.

getWaitingOnMonitor

public ThreadSnapshot.Monitor getWaitingOnMonitor()
Return the monitor this thread is waiting on, or null if none. If a thread calls Object.wait()on a monitor, the thread is said to be "waiting" on this monitor. If this is the case, this method return the monitor the thread is waiting on. Note that the thread needs to take the monitor before being able to wait on it, but that the monitor is actually released before waiting on it. Therefore, if this method returns non-null, then the corresponding monitor will also be returned by a call to CallTraceElement.getMonitors()for one stack trace element, however, this monitor is currently not held by the thread, for this reason.

Returns:
the monitor this thread is waiting on, or null.