297 |
|
void innerRun() { |
298 |
|
if (!compareAndSetState(READY, RUNNING)) |
299 |
|
return; |
300 |
< |
try { |
301 |
< |
runner = Thread.currentThread(); |
302 |
< |
if (getState() == RUNNING) // recheck after setting thread |
303 |
< |
set(callable.call()); |
304 |
< |
else |
305 |
< |
releaseShared(0); // cancel |
306 |
< |
} catch (Throwable ex) { |
307 |
< |
setException(ex); |
308 |
< |
} |
300 |
> |
|
301 |
> |
runner = Thread.currentThread(); |
302 |
> |
if (getState() == RUNNING) { // recheck after setting thread |
303 |
> |
V result; |
304 |
> |
try { |
305 |
> |
result = callable.call(); |
306 |
> |
} catch (Throwable ex) { |
307 |
> |
setException(ex); |
308 |
> |
return; |
309 |
> |
} |
310 |
> |
set(result); |
311 |
> |
} else { |
312 |
> |
releaseShared(0); // cancel |
313 |
> |
} |
314 |
|
} |
315 |
|
|
316 |
|
boolean innerRunAndReset() { |