@Override public boolean cancel(boolean mayInterruptIfRunning) { boolean result = super.cancel(mayInterruptIfRunning); if (result && taskListener != null) { try { if (isContextualCallback) { setupContext(); } taskListener.taskAborted(this, executor.getExecutorForTaskListener(), task, new CancellationException()); } finally { if (isContextualCallback) { resetContext(); } } } return result; }
@Override protected void afterExecute(Runnable r, Throwable t) { super.afterExecute(r, t); ManagedFutureTask task = (ManagedFutureTask) r; try { task.done(t); } finally { task.resetContext(); // Kill thread if thread older than threadLifeTime if (threadLifeTime > 0) { Thread thread = Thread.currentThread(); if (thread instanceof AbstractManagedThread) { long threadStartTime = ((AbstractManagedThread)thread).getThreadStartTime(); if ((System.currentTimeMillis() - threadStartTime)/1000 > threadLifeTime) { throw new ThreadExpiredException(); } } } } }
public void submitted() { if (taskListener != null) { try { if (isContextualCallback) { setupContext(); } taskListener.taskSubmitted(this, executor.getExecutorForTaskListener(), task); } finally { if (isContextualCallback) { resetContext(); } } } }
@Override protected void done() { // for calling taskDone for cancelled tasks super.done(); if (taskDoneCallback != null) { taskDoneCallback.taskDone(this); } if (taskListener != null && isCancelled()) { try { if (isContextualCallback) { setupContext(); } taskListener.taskDone(this, executor.getExecutorForTaskListener(), task, new CancellationException()); } finally { if (isContextualCallback) { resetContext(); } } } }