Eclipse JDT
Release 3.0

org.eclipse.jdt.debug.core
Interface IJavaThread

All Superinterfaces:
IAdaptable, IDebugElement, IFilteredStep, IStep, ISuspendResume, ITerminate, IThread

public interface IJavaThread
extends IThread, IFilteredStep

A thread in a Java virtual machine.

Clients are not intended to implement this interface.

See Also:
IThread

Field Summary
static int ERR_INCOMPATIBLE_THREAD_STATE
          Status code indicating a request to perform a message send failed because a thread was not suspended by a step or breakpoint event.
static int ERR_NESTED_METHOD_INVOCATION
          Status code indicating a request to perform a message send failed because a thread was already performing a message send.
static int ERR_THREAD_NOT_SUSPENDED
          Status code indicating a request failed because a thread was not suspended.
 
Method Summary
 boolean canTerminateEvaluation()
          Returns whether the currently executing IEvaluationRunnable supports termination.
 IJavaVariable findVariable(String variableName)
          Returns a variable with the given name, or null if unable to resolve a variable with the name, or if this thread is not currently suspended.
 IJavaObject getContendedMonitor()
          Returns a Java object for the monitor for which this thread is currently waiting or null.
 IJavaObject[] getOwnedMonitors()
          Returns the monitors owned by this thread or null if this thread owns no monitors.
 String getThreadGroupName()
          Returns the name of the thread group this thread belongs to, or null if none.
 boolean hasOwnedMonitors()
          Returns whether this threads owns at least one monitor.
 boolean isOutOfSynch()
          Returns whether any of the stack frames associated with this thread are running code in the VM that is out of synch with the code in the workspace.
 boolean isPerformingEvaluation()
          Returns whether this thread is currently performing an evaluation.
 boolean isSystemThread()
          Returns whether this thread is a system thread.
 boolean mayBeOutOfSynch()
          Returns whether this thread may be running code in the VM that is out of synch with the code in the workspace.
 void queueRunnable(Runnable runnable)
          Queues the given runnable with the list of runnables associated with this thread.
 void runEvaluation(IEvaluationRunnable evaluation, IProgressMonitor monitor, int evaluationDetail, boolean hitBreakpoints)
          Invokes the given evaluation with the specfied progress monitor.
 void stop(IJavaObject exception)
          Request to stops this thread with the given exception.
 void terminateEvaluation()
          Attempts to terminate the currently executing IEvaluationRunnable in this thread, if any.
 
Methods inherited from interface org.eclipse.debug.core.model.IThread
getBreakpoints, getName, getPriority, getStackFrames, getTopStackFrame, hasStackFrames
 
Methods inherited from interface org.eclipse.debug.core.model.IDebugElement
getDebugTarget, getLaunch, getModelIdentifier
 
Methods inherited from interface org.eclipse.core.runtime.IAdaptable
getAdapter
 
Methods inherited from interface org.eclipse.debug.core.model.ISuspendResume
canResume, canSuspend, isSuspended, resume, suspend
 
Methods inherited from interface org.eclipse.debug.core.model.IStep
canStepInto, canStepOver, canStepReturn, isStepping, stepInto, stepOver, stepReturn
 
Methods inherited from interface org.eclipse.debug.core.model.ITerminate
canTerminate, isTerminated, terminate
 
Methods inherited from interface org.eclipse.debug.core.model.IFilteredStep
canStepWithFilters, stepWithFilters
 

Field Detail

ERR_THREAD_NOT_SUSPENDED

public static final int ERR_THREAD_NOT_SUSPENDED
Status code indicating a request failed because a thread was not suspended.

See Also:
Constant Field Values

ERR_NESTED_METHOD_INVOCATION

public static final int ERR_NESTED_METHOD_INVOCATION
Status code indicating a request to perform a message send failed because a thread was already performing a message send.

See Also:
IJavaObject.sendMessage(String, String, IJavaValue[], IJavaThread, boolean), IJavaClassType.sendMessage(String, String, IJavaValue[], IJavaThread), IJavaClassType.newInstance(String, IJavaValue[], IJavaThread), Constant Field Values

ERR_INCOMPATIBLE_THREAD_STATE

public static final int ERR_INCOMPATIBLE_THREAD_STATE
Status code indicating a request to perform a message send failed because a thread was not suspended by a step or breakpoint event. When a thread is suspended explicitly via the suspend() method, it is not able to perform method invocations (this is a JDI limitation).

See Also:
IJavaObject.sendMessage(String, String, IJavaValue[], IJavaThread, boolean), IJavaClassType.sendMessage(String, String, IJavaValue[], IJavaThread), IJavaClassType.newInstance(String, IJavaValue[], IJavaThread), Constant Field Values
Method Detail

isSystemThread

public boolean isSystemThread()
                       throws DebugException
Returns whether this thread is a system thread.

Returns:
whether this thread is a system thread
Throws:
DebugException - if this method fails. Reasons include:
  • Failure communicating with the VM. The DebugException's status code contains the underlying exception responsible for the failure.

isOutOfSynch

public boolean isOutOfSynch()
                     throws DebugException
Returns whether any of the stack frames associated with this thread are running code in the VM that is out of synch with the code in the workspace.

Returns:
whether this thread is out of synch with the workspace.
Throws:
DebugException - if this method fails. Reasons include:
  • Failure communicating with the VM. The DebugException's status code contains the underlying exception responsible for the failure.
  • Since:
    2.0

mayBeOutOfSynch

public boolean mayBeOutOfSynch()
                        throws DebugException
Returns whether this thread may be running code in the VM that is out of synch with the code in the workspace.

Returns:
whether this thread may be out of synch with the workspace.
Throws:
DebugException - if this method fails. Reasons include:
  • Failure communicating with the VM. The DebugException's status code contains the underlying exception responsible for the failure.
  • Since:
    2.0

isPerformingEvaluation

public boolean isPerformingEvaluation()
Returns whether this thread is currently performing an evaluation.

Returns:
whether this thread is currently performing an evaluation
Since:
2.0

getThreadGroupName

public String getThreadGroupName()
                          throws DebugException
Returns the name of the thread group this thread belongs to, or null if none.

Returns:
thread group name, or null if none
Throws:
DebugException - if this method fails. Reasons include:
  • Failure communicating with the VM. The DebugException's status code contains the underlying exception responsible for the failure.

findVariable

public IJavaVariable findVariable(String variableName)
                           throws DebugException
Returns a variable with the given name, or null if unable to resolve a variable with the name, or if this thread is not currently suspended.

Variable lookup works only when a thread is suspended. Lookup is performed in all stack frames, in a top-down order, returning the first successful match, or null if no match is found.

Parameters:
variableName - the name of the variable to search for
Returns:
a variable, or null if none
Throws:
DebugException - if this method fails. Reasons include:
  • Failure communicating with the VM. The DebugException's status code contains the underlying exception responsible for the failure.

runEvaluation

public void runEvaluation(IEvaluationRunnable evaluation,
                          IProgressMonitor monitor,
                          int evaluationDetail,
                          boolean hitBreakpoints)
                   throws DebugException
Invokes the given evaluation with the specfied progress monitor. This thread fires a resume event when the evaluation begins, and a suspend event when the evaluation completes or throws an exception. The events are given a detail as specified by evaluationDetail (one of DebugEvent.EVALUATION or DebugEvent.EVALUATION_IMPLICIT).

Parameters:
evaluation - the evalation to perform
monitor - progress monitor (may be null
evaluationDetail - one of DebugEvent.EVALUATION or DebugEvent.EVALUATION_IMPLICIT
hitBreakpoints - whether or not breakpoints should be honored in this thread during the evaluation. If false, breakpoints hit in this thread during the evaluation will be ignored.
Throws:
DebugException - if an exception occurs performing the evaluation
Since:
2.0

queueRunnable

public void queueRunnable(Runnable runnable)
Queues the given runnable with the list of runnables associated with this thread. Runnables are executed asyncronously in a seperate thread. This method should be used to execute any code which performs an operation like a method invocation.

Parameters:
runnable - the runnable to execute.
Since:
2.1

terminateEvaluation

public void terminateEvaluation()
                         throws DebugException
Attempts to terminate the currently executing IEvaluationRunnable in this thread, if any. Evaluations may be composed of a series of instructions. Terminating an evaluation means stopping the evaluation after the current instruction completes. A single instruction (such as a method invocation) cannot be interrupted.

Throws:
DebugException - if an exception occurs while terminating the evaluation.
Since:
2.1

canTerminateEvaluation

public boolean canTerminateEvaluation()
Returns whether the currently executing IEvaluationRunnable supports termination. An IEvaluationRunnable supports termination if it implements ITerminate

Returns:
whether the current evaluation supports termination
Since:
2.1

getContendedMonitor

public IJavaObject getContendedMonitor()
                                throws DebugException
Returns a Java object for the monitor for which this thread is currently waiting or null.

Returns:
IJavaObject the contended monitor object or null if this thread is not waiting on a monitor.
Throws:
DebugException - if an exception occurs while retrieving the contended monitor.
Since:
2.1

getOwnedMonitors

public IJavaObject[] getOwnedMonitors()
                               throws DebugException
Returns the monitors owned by this thread or null if this thread owns no monitors.

Returns:
the owned monitors
Throws:
DebugException - if an exception occurs while retrieving the owned monitors of this thread.
Since:
2.1

hasOwnedMonitors

public boolean hasOwnedMonitors()
                         throws DebugException
Returns whether this threads owns at least one monitor.

Returns:
boolean whether this thread owns a monitor
Throws:
DebugException - if an exception occurs determining if there are owned monitors.
Since:
2.1

stop

public void stop(IJavaObject exception)
          throws DebugException
Request to stops this thread with the given exception.
The result will be the same as calling java.lang.Thread#stop(java.lang.Throwable).
If the thread is suspended when the method is called, the thread must be resumed to complete the action.
exception must represent an exception.

Parameters:
exception - the exception to throw.
Throws:
DebugException
Since:
3.0
See Also:
Thread.stop(java.lang.Throwable)

Eclipse JDT
Release 3.0

Copyright (c) IBM Corp. and others 2000, 2004. All Rights Reserved.