--- jsr166/src/test/tck/ExecutorsTest.java 2015/04/25 04:55:30 1.45 +++ jsr166/src/test/tck/ExecutorsTest.java 2015/10/04 16:14:48 1.46 @@ -38,22 +38,24 @@ public class ExecutorsTest extends JSR16 * A newCachedThreadPool can execute runnables */ public void testNewCachedThreadPool1() { - ExecutorService e = Executors.newCachedThreadPool(); - e.execute(new NoOpRunnable()); - e.execute(new NoOpRunnable()); - e.execute(new NoOpRunnable()); - joinPool(e); + final ExecutorService e = Executors.newCachedThreadPool(); + try (PoolCleaner cleaner = cleaner(e)) { + e.execute(new NoOpRunnable()); + e.execute(new NoOpRunnable()); + e.execute(new NoOpRunnable()); + } } /** * A newCachedThreadPool with given ThreadFactory can execute runnables */ public void testNewCachedThreadPool2() { - ExecutorService e = Executors.newCachedThreadPool(new SimpleThreadFactory()); - e.execute(new NoOpRunnable()); - e.execute(new NoOpRunnable()); - e.execute(new NoOpRunnable()); - joinPool(e); + final ExecutorService e = Executors.newCachedThreadPool(new SimpleThreadFactory()); + try (PoolCleaner cleaner = cleaner(e)) { + e.execute(new NoOpRunnable()); + e.execute(new NoOpRunnable()); + e.execute(new NoOpRunnable()); + } } /** @@ -70,22 +72,24 @@ public class ExecutorsTest extends JSR16 * A new SingleThreadExecutor can execute runnables */ public void testNewSingleThreadExecutor1() { - ExecutorService e = Executors.newSingleThreadExecutor(); - e.execute(new NoOpRunnable()); - e.execute(new NoOpRunnable()); - e.execute(new NoOpRunnable()); - joinPool(e); + final ExecutorService e = Executors.newSingleThreadExecutor(); + try (PoolCleaner cleaner = cleaner(e)) { + e.execute(new NoOpRunnable()); + e.execute(new NoOpRunnable()); + e.execute(new NoOpRunnable()); + } } /** * A new SingleThreadExecutor with given ThreadFactory can execute runnables */ public void testNewSingleThreadExecutor2() { - ExecutorService e = Executors.newSingleThreadExecutor(new SimpleThreadFactory()); - e.execute(new NoOpRunnable()); - e.execute(new NoOpRunnable()); - e.execute(new NoOpRunnable()); - joinPool(e); + final ExecutorService e = Executors.newSingleThreadExecutor(new SimpleThreadFactory()); + try (PoolCleaner cleaner = cleaner(e)) { + e.execute(new NoOpRunnable()); + e.execute(new NoOpRunnable()); + e.execute(new NoOpRunnable()); + } } /** @@ -102,13 +106,12 @@ public class ExecutorsTest extends JSR16 * A new SingleThreadExecutor cannot be casted to concrete implementation */ public void testCastNewSingleThreadExecutor() { - ExecutorService e = Executors.newSingleThreadExecutor(); - try { - ThreadPoolExecutor tpe = (ThreadPoolExecutor)e; - shouldThrow(); - } catch (ClassCastException success) { - } finally { - joinPool(e); + final ExecutorService e = Executors.newSingleThreadExecutor(); + try (PoolCleaner cleaner = cleaner(e)) { + try { + ThreadPoolExecutor tpe = (ThreadPoolExecutor)e; + shouldThrow(); + } catch (ClassCastException success) {} } } @@ -116,22 +119,24 @@ public class ExecutorsTest extends JSR16 * A new newFixedThreadPool can execute runnables */ public void testNewFixedThreadPool1() { - ExecutorService e = Executors.newFixedThreadPool(2); - e.execute(new NoOpRunnable()); - e.execute(new NoOpRunnable()); - e.execute(new NoOpRunnable()); - joinPool(e); + final ExecutorService e = Executors.newFixedThreadPool(2); + try (PoolCleaner cleaner = cleaner(e)) { + e.execute(new NoOpRunnable()); + e.execute(new NoOpRunnable()); + e.execute(new NoOpRunnable()); + } } /** * A new newFixedThreadPool with given ThreadFactory can execute runnables */ public void testNewFixedThreadPool2() { - ExecutorService e = Executors.newFixedThreadPool(2, new SimpleThreadFactory()); - e.execute(new NoOpRunnable()); - e.execute(new NoOpRunnable()); - e.execute(new NoOpRunnable()); - joinPool(e); + final ExecutorService e = Executors.newFixedThreadPool(2, new SimpleThreadFactory()); + try (PoolCleaner cleaner = cleaner(e)) { + e.execute(new NoOpRunnable()); + e.execute(new NoOpRunnable()); + e.execute(new NoOpRunnable()); + } } /** @@ -158,11 +163,12 @@ public class ExecutorsTest extends JSR16 * An unconfigurable newFixedThreadPool can execute runnables */ public void testUnconfigurableExecutorService() { - ExecutorService e = Executors.unconfigurableExecutorService(Executors.newFixedThreadPool(2)); - e.execute(new NoOpRunnable()); - e.execute(new NoOpRunnable()); - e.execute(new NoOpRunnable()); - joinPool(e); + final ExecutorService e = Executors.unconfigurableExecutorService(Executors.newFixedThreadPool(2)); + try (PoolCleaner cleaner = cleaner(e)) { + e.execute(new NoOpRunnable()); + e.execute(new NoOpRunnable()); + e.execute(new NoOpRunnable()); + } } /** @@ -189,8 +195,8 @@ public class ExecutorsTest extends JSR16 * a newSingleThreadScheduledExecutor successfully runs delayed task */ public void testNewSingleThreadScheduledExecutor() throws Exception { - ScheduledExecutorService p = Executors.newSingleThreadScheduledExecutor(); - try { + final ScheduledExecutorService p = Executors.newSingleThreadScheduledExecutor(); + try (PoolCleaner cleaner = cleaner(p)) { final CountDownLatch proceed = new CountDownLatch(1); final Runnable task = new CheckedRunnable() { public void realRun() { @@ -206,8 +212,6 @@ public class ExecutorsTest extends JSR16 assertTrue(f.isDone()); assertFalse(f.isCancelled()); assertTrue(millisElapsedSince(startTime) >= timeoutMillis()); - } finally { - joinPool(p); } } @@ -215,8 +219,8 @@ public class ExecutorsTest extends JSR16 * a newScheduledThreadPool successfully runs delayed task */ public void testNewScheduledThreadPool() throws Exception { - ScheduledExecutorService p = Executors.newScheduledThreadPool(2); - try { + final ScheduledExecutorService p = Executors.newScheduledThreadPool(2); + try (PoolCleaner cleaner = cleaner(p)) { final CountDownLatch proceed = new CountDownLatch(1); final Runnable task = new CheckedRunnable() { public void realRun() { @@ -232,8 +236,6 @@ public class ExecutorsTest extends JSR16 assertTrue(f.isDone()); assertFalse(f.isCancelled()); assertTrue(millisElapsedSince(startTime) >= timeoutMillis()); - } finally { - joinPool(p); } } @@ -241,10 +243,10 @@ public class ExecutorsTest extends JSR16 * an unconfigurable newScheduledThreadPool successfully runs delayed task */ public void testUnconfigurableScheduledExecutorService() throws Exception { - ScheduledExecutorService p = + final ScheduledExecutorService p = Executors.unconfigurableScheduledExecutorService (Executors.newScheduledThreadPool(2)); - try { + try (PoolCleaner cleaner = cleaner(p)) { final CountDownLatch proceed = new CountDownLatch(1); final Runnable task = new CheckedRunnable() { public void realRun() { @@ -260,8 +262,6 @@ public class ExecutorsTest extends JSR16 assertTrue(f.isDone()); assertFalse(f.isCancelled()); assertTrue(millisElapsedSince(startTime) >= timeoutMillis()); - } finally { - joinPool(p); } } @@ -322,16 +322,10 @@ public class ExecutorsTest extends JSR16 done.countDown(); }}; ExecutorService e = Executors.newSingleThreadExecutor(Executors.defaultThreadFactory()); - - e.execute(r); - await(done); - - try { - e.shutdown(); - } catch (SecurityException ok) { + try (PoolCleaner cleaner = cleaner(e)) { + e.execute(r); + await(done); } - - joinPool(e); } /** @@ -364,10 +358,10 @@ public class ExecutorsTest extends JSR16 done.countDown(); }}; ExecutorService e = Executors.newSingleThreadExecutor(Executors.privilegedThreadFactory()); - e.execute(r); - await(done); - e.shutdown(); - joinPool(e); + try (PoolCleaner cleaner = cleaner(e)) { + e.execute(r); + await(done); + } }}; runWithPermissions(r,