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); |
1038 |
– |
} finally { |
1038 |
|
done.countDown(); |
1040 |
– |
joinPool(p); |
1039 |
|
} |
1040 |
|
} |
1041 |
|
|
1043 |
|
* execute throws RejectedExecutionException if saturated. |
1044 |
|
*/ |
1045 |
|
public void testSaturatedExecute() { |
1046 |
< |
ThreadPoolExecutor p = |
1046 |
> |
final ThreadPoolExecutor p = |
1047 |
|
new ThreadPoolExecutor(1, 1, |
1048 |
|
LONG_DELAY_MS, MILLISECONDS, |
1049 |
|
new ArrayBlockingQueue<Runnable>(1)); |
1050 |
< |
final CountDownLatch done = new CountDownLatch(1); |
1051 |
< |
try { |
1050 |
> |
try (PoolCleaner cleaner = cleaner(p)) { |
1051 |
> |
final CountDownLatch done = new CountDownLatch(1); |
1052 |
|
Runnable task = new CheckedRunnable() { |
1053 |
|
public void realRun() throws InterruptedException { |
1054 |
|
done.await(); |
1062 |
|
} catch (RejectedExecutionException success) {} |
1063 |
|
assertTrue(p.getTaskCount() <= 2); |
1064 |
|
} |
1067 |
– |
} finally { |
1065 |
|
done.countDown(); |
1069 |
– |
joinPool(p); |
1066 |
|
} |
1067 |
|
} |
1068 |
|
|