Make sure cancelled scheduled tasks will not run again if cancelled before

This commit is contained in:
Norman Maurer 2013-03-22 08:12:57 +01:00
parent 28576aa41e
commit 624bda4695

View File

@ -800,16 +800,19 @@ public abstract class SingleThreadEventExecutor extends AbstractEventExecutor {
setSuccessInternal(result);
}
} else {
task.call();
if (!executor().isShutdown()) {
long p = periodNanos;
if (p > 0) {
deadlineNanos += p;
} else {
deadlineNanos = nanoTime() - p;
}
if (!isDone()) {
executor().delayedTaskQueue.add(this);
// check if is done as it may was cancelled
if (!isDone()) {
task.call();
if (!executor().isShutdown()) {
long p = periodNanos;
if (p > 0) {
deadlineNanos += p;
} else {
deadlineNanos = nanoTime() - p;
}
if (!isDone()) {
executor().delayedTaskQueue.add(this);
}
}
}
}