compbio.engine.local
Class _TrackingExecutor

java.lang.Object
  extended by java.util.concurrent.AbstractExecutorService
      extended by compbio.engine.local._TrackingExecutor
All Implemented Interfaces:
java.util.concurrent.Executor, java.util.concurrent.ExecutorService

public class _TrackingExecutor
extends java.util.concurrent.AbstractExecutorService

This executor extends standard Java ExecutorService by adding the method to obtain all Runnables which were running and did not complete upon executor termination. For this to work properly Runnables must propagate an Interruption exceptions, not swallow them, which a good Runnable should do anyway. TODO it may be better to persists task from different place

Author:
pvtroshin

Constructor Summary
_TrackingExecutor(java.util.concurrent.ExecutorService executor)
           
 
Method Summary
 boolean awaitTermination(long timeout, java.util.concurrent.TimeUnit unit)
           
 void execute(java.lang.Runnable runnable)
           
 java.util.List getCancelledTasks()
           
 boolean isShutdown()
           
 boolean isTerminated()
           
 void shutdown()
           
 java.util.List<java.lang.Runnable> shutdownNow()
           
<T> java.util.concurrent.Future<T>
submit(java.util.concurrent.Callable<T> task)
           
 
Methods inherited from class java.util.concurrent.AbstractExecutorService
invokeAll, invokeAll, invokeAny, invokeAny, submit, submit
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

_TrackingExecutor

public _TrackingExecutor(java.util.concurrent.ExecutorService executor)
Method Detail

getCancelledTasks

public java.util.List getCancelledTasks()

execute

public void execute(java.lang.Runnable runnable)

submit

public <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T> task)
Specified by:
submit in interface java.util.concurrent.ExecutorService
Overrides:
submit in class java.util.concurrent.AbstractExecutorService

awaitTermination

public boolean awaitTermination(long timeout,
                                java.util.concurrent.TimeUnit unit)
                         throws java.lang.InterruptedException
Throws:
java.lang.InterruptedException

isShutdown

public boolean isShutdown()

isTerminated

public boolean isTerminated()

shutdown

public void shutdown()

shutdownNow

public java.util.List<java.lang.Runnable> shutdownNow()