ptolemy.actor.process
Class ProcessThread

java.lang.Object
  extended by java.lang.Thread
      extended by ptolemy.kernel.util.PtolemyThread
          extended by ptolemy.actor.process.ProcessThread
All Implemented Interfaces:
java.lang.Runnable, Debuggable
Direct Known Subclasses:
DDEThread

public class ProcessThread
extends PtolemyThread

Thread class acting as a process for process oriented domains.

In process oriented domains, each actor acts as a separate process and its execution is not centrally controlled by the director. Each process runs concurrently with other processes and is responsible for calling its execution methods.

This class provides the mechanism to implement the above. An instance of this class can be created by passing an actor as an argument to the constructor. This class runs as a separate thread on being started and calls the execution methods on the actor, repeatedly. Specifically, it calls initialize(), and then repeatedly calls the prefire(), fire() and postfire() methods of the actor. Before termination, this calls the wrapup() method of the actor.

If an actor returns false in its postfire() methods, the actor is never fired again and the thread or process terminates after calling wrapup() on the actor.

An instance of this class is associated with an instance of ProcessDirector as well as an instance of Actor. The _increaseActiveCount() of the director is called from the constructor of this class, and the _decreaseActiveCount() method is called at the end of the run() method, just before the thread terminates.

Since:
Ptolemy II 0.2
Version:
$Id: ProcessThread.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Mudit Goel, Neil Smyth, John S. Davis II, Contributors: Efrat Jaeger, Daniel Crawl
Accepted Rating:
Yellow (mudit)
Proposed Rating:
Green (mudit)

Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
private  Actor _actor
           
private  ProcessDirector _director
           
private  Manager _manager
           
private  java.lang.String _name
           
 
Fields inherited from class ptolemy.kernel.util.PtolemyThread
_debugging, _debugListeners
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
ProcessThread(Actor actor, ProcessDirector director)
          Construct a thread to be used for the execution of the iteration methods of the actor.
 
Method Summary
 Actor getActor()
          Return the actor being executed by this thread.
 void run()
          Initialize the actor, iterate it through the execution cycle until it terminates.
 void wrapup()
          End the execution of the actor under the control of this thread.
 
Methods inherited from class ptolemy.kernel.util.PtolemyThread
_debug, _debug, addDebugListener, removeDebugListener
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_actor

private Actor _actor

_director

private ProcessDirector _director

_manager

private Manager _manager

_name

private java.lang.String _name
Constructor Detail

ProcessThread

public ProcessThread(Actor actor,
                     ProcessDirector director)
Construct a thread to be used for the execution of the iteration methods of the actor. This increases the count of active actors in the director.

Parameters:
actor - The actor that needs to be executed.
director - The director responsible for the execution of this actor.
Method Detail

getActor

public Actor getActor()
Return the actor being executed by this thread.

Returns:
The actor being executed by this thread.

run

public void run()
Initialize the actor, iterate it through the execution cycle until it terminates. At the end of the termination, calls wrapup on the actor.

Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread

wrapup

public void wrapup()
            throws IllegalActionException
End the execution of the actor under the control of this thread. Subclasses are encouraged to override this method as necessary for domain specific functionality.

Throws:
IllegalActionException - If an error occurs while ending execution of the actor under the control of this thread.