393 |
|
final CountDownLatch aboutToWait = new CountDownLatch(1); |
394 |
|
Thread t = newStartedThread(new CheckedRunnable() { |
395 |
|
public void realRun() throws InterruptedException { |
396 |
+ |
long startTime = System.nanoTime(); |
397 |
|
for (int i = 0; i < SIZE; ++i) { |
397 |
– |
long t0 = System.nanoTime(); |
398 |
|
assertEquals(i, (int) q.poll(LONG_DELAY_MS, MILLISECONDS)); |
399 |
– |
assertTrue(millisElapsedSince(t0) < SMALL_DELAY_MS); |
399 |
|
} |
401 |
– |
long t0 = System.nanoTime(); |
400 |
|
aboutToWait.countDown(); |
401 |
|
try { |
402 |
|
q.poll(LONG_DELAY_MS, MILLISECONDS); |
403 |
|
shouldThrow(); |
404 |
|
} catch (InterruptedException success) { |
405 |
< |
assertTrue(millisElapsedSince(t0) < MEDIUM_DELAY_MS); |
405 |
> |
assertTrue(millisElapsedSince(startTime) < LONG_DELAY_MS); |
406 |
|
} |
407 |
|
}}); |
408 |
|
|
409 |
|
aboutToWait.await(); |
410 |
< |
waitForThreadToEnterWaitState(t, SMALL_DELAY_MS); |
410 |
> |
waitForThreadToEnterWaitState(t, LONG_DELAY_MS); |
411 |
|
t.interrupt(); |
412 |
< |
awaitTermination(t, MEDIUM_DELAY_MS); |
412 |
> |
awaitTermination(t); |
413 |
|
} |
414 |
|
|
415 |
|
/** |
622 |
|
public void testPollInExecutor() { |
623 |
|
final PriorityBlockingQueue q = new PriorityBlockingQueue(2); |
624 |
|
final CheckedBarrier threadsStarted = new CheckedBarrier(2); |
625 |
< |
ExecutorService executor = Executors.newFixedThreadPool(2); |
626 |
< |
executor.execute(new CheckedRunnable() { |
627 |
< |
public void realRun() throws InterruptedException { |
628 |
< |
assertNull(q.poll()); |
629 |
< |
threadsStarted.await(); |
630 |
< |
assertSame(one, q.poll(LONG_DELAY_MS, MILLISECONDS)); |
631 |
< |
checkEmpty(q); |
632 |
< |
}}); |
633 |
< |
|
634 |
< |
executor.execute(new CheckedRunnable() { |
635 |
< |
public void realRun() throws InterruptedException { |
636 |
< |
threadsStarted.await(); |
637 |
< |
q.put(one); |
638 |
< |
}}); |
639 |
< |
|
640 |
< |
joinPool(executor); |
625 |
> |
final ExecutorService executor = Executors.newFixedThreadPool(2); |
626 |
> |
try (PoolCleaner cleaner = cleaner(executor)) { |
627 |
> |
executor.execute(new CheckedRunnable() { |
628 |
> |
public void realRun() throws InterruptedException { |
629 |
> |
assertNull(q.poll()); |
630 |
> |
threadsStarted.await(); |
631 |
> |
assertSame(one, q.poll(LONG_DELAY_MS, MILLISECONDS)); |
632 |
> |
checkEmpty(q); |
633 |
> |
}}); |
634 |
> |
|
635 |
> |
executor.execute(new CheckedRunnable() { |
636 |
> |
public void realRun() throws InterruptedException { |
637 |
> |
threadsStarted.await(); |
638 |
> |
q.put(one); |
639 |
> |
}}); |
640 |
> |
} |
641 |
|
} |
642 |
|
|
643 |
|
/** |