SUGGESTED FIX
--- FutureTask.java 2 May 2005 18:38:53 -0000 1.35
+++ FutureTask.java 12 May 2005 00:12:38 -0000 1.37
@@ -265,7 +265,10 @@
return;
try {
runner = Thread.currentThread();
- innerSet(callable.call());
+ if (getState() == RUNNING) // recheck after setting thread
+ innerSet(callable.call());
+ else
+ releaseShared(0); // cancel
} catch (Throwable ex) {
innerSetException(ex);
}
@@ -276,7 +279,8 @@
return false;
try {
runner = Thread.currentThread();
- callable.call(); // don't set result
+ if (getState() == RUNNING)
+ callable.call(); // don't set result
runner = null;
return compareAndSetState(RUNNING, 0);
} catch (Throwable ex) {
###@###.### 2005-05-12 01:05:47 GMT
|