Calling cancel on a Future returned by a TaskScheduler works reliably now

Issue: SPR-9821
This commit is contained in:
Juergen Hoeller 2012-09-25 13:53:07 +02:00
parent 7fc16298e6
commit 0d88c73523
1 changed files with 9 additions and 3 deletions

View File

@ -108,21 +108,27 @@ class ReschedulingRunnable extends DelegatingErrorHandlingRunnable implements Sc
}
public Object get() throws InterruptedException, ExecutionException {
ScheduledFuture curr;
synchronized (this.triggerContextMonitor) {
return this.currentFuture.get();
curr = this.currentFuture;
}
return curr.get();
}
public Object get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
ScheduledFuture curr;
synchronized (this.triggerContextMonitor) {
return this.currentFuture.get(timeout, unit);
curr = this.currentFuture;
}
return curr.get(timeout, unit);
}
public long getDelay(TimeUnit unit) {
ScheduledFuture curr;
synchronized (this.triggerContextMonitor) {
return this.currentFuture.getDelay(unit);
curr = this.currentFuture;
}
return curr.getDelay(unit);
}
public int compareTo(Delayed other) {