edu.rice.cs.plt.concurrent
Class ExecutorTaskController<R>

java.lang.Object
  extended by edu.rice.cs.plt.concurrent.TaskController<R>
      extended by edu.rice.cs.plt.concurrent.ExecutorTaskController<R>
All Implemented Interfaces:
ResolvingThunk<R>, Thunk<R>, Future<R>

public class ExecutorTaskController<R>
extends TaskController<R>

A TaskController for a simple task, which is scheduled for execution by an Executor. To support canceling, the task should respond to an interrupt by throwing an InterruptedException, wrapped by a WrappedException. The task is submitted (via Executor.execute(java.lang.Runnable)) when start() is invoked (if the executor blocks, so will start()); its status is changed to "running" when it actually begins executing; if canceled in the interim, the status will still be "paused" until the task begins its scheduled execution.


Nested Class Summary
 
Nested classes/interfaces inherited from class edu.rice.cs.plt.concurrent.TaskController
TaskController.CanceledStartingState, TaskController.CanceledState, TaskController.CancelingState, TaskController.CleanlyFinishedState, TaskController.ComputingState, TaskController.ExecutionExceptionState, TaskController.FinishedState, TaskController.FreshStartingState, TaskController.FreshState, TaskController.InternalExceptionState, TaskController.RunningState, TaskController.StartingState, TaskController.State, TaskController.Status, TaskController.WaitingState
 
Field Summary
 
Fields inherited from class edu.rice.cs.plt.concurrent.TaskController
state
 
Constructor Summary
ExecutorTaskController(Executor executor, Thunk<? extends R> task)
           
 
Method Summary
protected  void discard()
          Clean up after the task has completed.
protected  void doStart()
          Begin computation and call TaskController.started().
protected  void doStop()
          Terminate computation and call TaskController.stopped().
 
Methods inherited from class edu.rice.cs.plt.concurrent.TaskController
attemptGet, attemptGet, cancel, cancel, finishedCleanly, finishedWithImplementationException, finishedWithTaskException, finishListeners, get, get, get, hasValue, isCanceled, isCancelled, isDone, isResolved, runningState, start, started, status, stopped, value
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ExecutorTaskController

public ExecutorTaskController(Executor executor,
                              Thunk<? extends R> task)
Method Detail

doStart

protected void doStart()
Description copied from class: TaskController
Begin computation and call TaskController.started(). If starting does not occur immediately (for example, blocking occurs first), the started() call may occur in a different thread.

Specified by:
doStart in class TaskController<R>

doStop

protected void doStop()
Description copied from class: TaskController
Terminate computation and call TaskController.stopped(). Never called before started() has been invoked. If termination does not occur immediately (for example, blocking occurs first), the stopped() call may occur in a different thread.

Specified by:
doStop in class TaskController<R>

discard

protected void discard()
Description copied from class: TaskController
Clean up after the task has completed. Called whenever the task enters a canceled or finished state (for example, when finishedCleanly() has been called, or when cancel() is invoked on a PAUSED controller). By default, does nothing, but can be overridden to close connections or throw away unnecessary objects. (Where TaskControllers live far beyond their computation life span (as simple wrappers for a value), this allows objects related to the computation to be garbage-collected in the interim.)

Overrides:
discard in class TaskController<R>