22 |
|
import java.util.concurrent.ForkJoinWorkerThread; |
23 |
|
import java.util.concurrent.RecursiveTask; |
24 |
|
import java.util.concurrent.TimeUnit; |
25 |
+ |
import java.util.concurrent.atomic.AtomicBoolean; |
26 |
|
import java.util.concurrent.locks.ReentrantLock; |
27 |
|
import static java.util.concurrent.TimeUnit.MILLISECONDS; |
28 |
|
import java.security.AccessControlException; |
387 |
|
public void testExecuteRunnable() throws Throwable { |
388 |
|
ExecutorService e = new ForkJoinPool(1); |
389 |
|
try { |
390 |
< |
TrackedRunnable task = trackedRunnable(SHORT_DELAY_MS); |
391 |
< |
assertFalse(task.isDone()); |
390 |
> |
final AtomicBoolean done = new AtomicBoolean(false); |
391 |
> |
CheckedRunnable task = new CheckedRunnable() { |
392 |
> |
public void realRun() { |
393 |
> |
done.set(true); |
394 |
> |
}}; |
395 |
|
Future<?> future = e.submit(task); |
396 |
|
assertNull(future.get()); |
397 |
< |
assertNull(future.get(MEDIUM_DELAY_MS, MILLISECONDS)); |
398 |
< |
assertTrue(task.isDone()); |
397 |
> |
assertNull(future.get(0, MILLISECONDS)); |
398 |
> |
assertTrue(done.get()); |
399 |
|
assertTrue(future.isDone()); |
400 |
|
assertFalse(future.isCancelled()); |
401 |
|
} finally { |