530 |
|
new ThreadPoolExecutor(1, 1, |
531 |
|
LONG_DELAY_MS, MILLISECONDS, |
532 |
|
q); |
533 |
< |
final CountDownLatch threadStarted = new CountDownLatch(1); |
534 |
< |
final CountDownLatch done = new CountDownLatch(1); |
535 |
< |
try { |
533 |
> |
try (PoolCleaner cleaner = cleaner(p)) { |
534 |
> |
final CountDownLatch threadStarted = new CountDownLatch(1); |
535 |
> |
final CountDownLatch done = new CountDownLatch(1); |
536 |
|
FutureTask[] tasks = new FutureTask[5]; |
537 |
|
for (int i = 0; i < tasks.length; i++) { |
538 |
|
Callable task = new CheckedCallable<Boolean>() { |
550 |
|
assertFalse(q.contains(tasks[0])); |
551 |
|
assertTrue(q.contains(tasks[tasks.length - 1])); |
552 |
|
assertEquals(tasks.length - 1, q.size()); |
553 |
– |
} finally { |
553 |
|
done.countDown(); |
555 |
– |
joinPool(p); |
554 |
|
} |
555 |
|
} |
556 |
|
|
563 |
|
new ThreadPoolExecutor(1, 1, |
564 |
|
LONG_DELAY_MS, MILLISECONDS, |
565 |
|
q); |
566 |
< |
Runnable[] tasks = new Runnable[5]; |
567 |
< |
final CountDownLatch threadStarted = new CountDownLatch(1); |
568 |
< |
final CountDownLatch done = new CountDownLatch(1); |
569 |
< |
try { |
566 |
> |
try (PoolCleaner cleaner = cleaner(p)) { |
567 |
> |
Runnable[] tasks = new Runnable[6]; |
568 |
> |
final CountDownLatch threadStarted = new CountDownLatch(1); |
569 |
> |
final CountDownLatch done = new CountDownLatch(1); |
570 |
|
for (int i = 0; i < tasks.length; i++) { |
571 |
|
tasks[i] = new CheckedRunnable() { |
572 |
|
public void realRun() throws InterruptedException { |
585 |
|
assertTrue(q.contains(tasks[3])); |
586 |
|
assertTrue(p.remove(tasks[3])); |
587 |
|
assertFalse(q.contains(tasks[3])); |
590 |
– |
} finally { |
588 |
|
done.countDown(); |
592 |
– |
joinPool(p); |
589 |
|
} |
590 |
|
} |
591 |
|
|
600 |
|
new ThreadPoolExecutor(1, 1, |
601 |
|
LONG_DELAY_MS, MILLISECONDS, |
602 |
|
q); |
603 |
< |
FutureTask[] tasks = new FutureTask[5]; |
604 |
< |
try { |
603 |
> |
try (PoolCleaner cleaner = cleaner(p)) { |
604 |
> |
FutureTask[] tasks = new FutureTask[5]; |
605 |
|
for (int i = 0; i < tasks.length; i++) { |
606 |
|
Callable task = new CheckedCallable<Boolean>() { |
607 |
|
public Boolean realCall() throws InterruptedException { |
625 |
|
p.purge(); // Nothing to do |
626 |
|
assertEquals(tasks.length - 3, q.size()); |
627 |
|
assertEquals(tasks.length - 2, p.getTaskCount()); |
632 |
– |
} finally { |
628 |
|
done.countDown(); |
634 |
– |
joinPool(p); |
629 |
|
} |
630 |
|
} |
631 |
|
|
1018 |
|
60, SECONDS, |
1019 |
|
new ArrayBlockingQueue<Runnable>(10)); |
1020 |
|
|
1021 |
< |
final CountDownLatch threadStarted = new CountDownLatch(1); |
1022 |
< |
final CountDownLatch done = new CountDownLatch(1); |
1023 |
< |
try { |
1021 |
> |
try (PoolCleaner cleaner = cleaner(p)) { |
1022 |
> |
final CountDownLatch threadStarted = new CountDownLatch(1); |
1023 |
> |
final CountDownLatch done = new CountDownLatch(1); |
1024 |
|
Thread t = newStartedThread(new CheckedInterruptedRunnable() { |
1025 |
|
public void realRun() throws Exception { |
1026 |
|
Callable task = new CheckedCallable<Boolean>() { |
1035 |
|
assertTrue(threadStarted.await(MEDIUM_DELAY_MS, MILLISECONDS)); |
1036 |
|
t.interrupt(); |
1037 |
|
awaitTermination(t, MEDIUM_DELAY_MS); |
1044 |
– |
} finally { |
1038 |
|
done.countDown(); |
1046 |
– |
joinPool(p); |
1039 |
|
} |
1040 |
|
} |
1041 |
|
|