Class ActiveTask
java.lang.Object
com.pnfsoftware.jeb.util.concurrent.ActiveTask
- All Implemented Interfaces:
Runnable
A runnable that can control its own execution. Tasks extending this class must implement the
runi()
method. Client code can start a task
, request
cancellation and/or interruption, as well as join for the task to terminate (either normal
termination or a forced termination resulting from a cancel/interrupt request).
This class is similar to some implementation of futures
(albeit, its interface is
simpler). The underlying execution primitive (the thread) is indirectly accessible via the
join()
method; in particular, this class should be used if the client code wants to
explicitly join on the underlying thread.
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
cancel()
Request cancellation and return.boolean
cancel
(boolean interruptThread) Request cancellation and return.boolean
Request an interruption of the task's thread.final boolean
boolean
isDone()
boolean
join()
boolean
join
(long millis) protected void
Executed in async mode only (in sync mode, exceptions happening during execution are not caught).protected void
Executed in sync or async mode.protected void
Executed in sync or async mode.void
run()
Careful not to call when currently executed (sync or async).abstract void
runi()
boolean
Execute this task on a new daemon thread.
-
Constructor Details
-
ActiveTask
- Parameters:
name
- task name
-
ActiveTask
public ActiveTask()
-
-
Method Details
-
start
Execute this task on a new daemon thread. If a task has already been started and has not completed, a new task will not be started and instead this method will return false.- Parameters:
completion
- optional runnable that will be executed upon completion, no matter the outcome (even if an exception raised); the execution will take place on the task's thread- Returns:
- true if a new task was started, false otherwise
-
interrupt
public boolean interrupt()Request an interruption of the task's thread. This method is non blocking.- Returns:
-
cancel
public boolean cancel()Request cancellation and return. The thread is interrupted.- Returns:
- true if the thread was alive and has been cancelled
-
cancel
public boolean cancel(boolean interruptThread) Request cancellation and return.- Parameters:
interruptThread
- true to also interrupt the thread- Returns:
- true if the thread was alive and has been cancelled
-
isDone
public boolean isDone() -
isCancelled
public final boolean isCancelled() -
join
- Throws:
InterruptedException
-
join
- Throws:
InterruptedException
-
run
public void run()Careful not to call when currently executed (sync or async). -
runi
public abstract void runi() -
onPreExecution
protected void onPreExecution()Executed in sync or async mode. Default implementation does nothing. -
onPostExecution
protected void onPostExecution()Executed in sync or async mode. Default implementation does nothing. -
onException
Executed in async mode only (in sync mode, exceptions happening during execution are not caught). The default implementation logs the error and does not rethrow it.- Parameters:
e
-
-