ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/JSR166TestCase.java
(Generate patch)

Comparing jsr166/src/test/tck/JSR166TestCase.java (file contents):
Revision 1.159 by jsr166, Sun Oct 4 00:30:50 2015 UTC vs.
Revision 1.162 by jsr166, Sun Oct 4 04:40:00 2015 UTC

# Line 770 | Line 770 | public class JSR166TestCase extends Test
770      /**
771       * Allows use of try-with-resources with per-test thread pools.
772       */
773 <    class PoolCleaner<T extends ExecutorService>
774 <            implements AutoCloseable {
775 <        public final T pool;
776 <        public PoolCleaner(T pool) { this.pool = pool; }
773 >    class PoolCleaner implements AutoCloseable {
774 >        private final ExecutorService pool;
775 >        public PoolCleaner(ExecutorService pool) { this.pool = pool; }
776          public void close() { joinPool(pool); }
777      }
778  
779 <    <T extends ExecutorService> PoolCleaner<T> cleaner(T pool) {
780 <        return new PoolCleaner<T>(pool);
779 >    PoolCleaner cleaner(ExecutorService pool) {
780 >        return new PoolCleaner(pool);
781      }
782  
783      /**
# Line 813 | Line 812 | public class JSR166TestCase extends Test
812       * necessarily individually slow because they must block.
813       */
814      void testInParallel(Action ... actions) {
815 <        try (PoolCleaner<ExecutorService> cleaner
816 <             = cleaner(Executors.newCachedThreadPool())) {
818 <            ExecutorService pool = cleaner.pool;
815 >        ExecutorService pool = Executors.newCachedThreadPool();
816 >        try (PoolCleaner cleaner = cleaner(pool)) {
817              ArrayList<Future<?>> futures = new ArrayList<>(actions.length);
818              for (final Action action : actions)
819                  futures.add(pool.submit(new CheckedRunnable() {
# Line 1320 | Line 1318 | public class JSR166TestCase extends Test
1318              }};
1319      }
1320  
1321 <    public Runnable awaiter(final CountDownLatch latch) {
1322 <        return new CheckedRunnable() {
1323 <            public void realRun() throws InterruptedException {
1324 <                await(latch);
1325 <            }};
1321 >    class LatchAwaiter extends CheckedRunnable {
1322 >        static final int NEW = 0;
1323 >        static final int RUNNING = 1;
1324 >        static final int DONE = 2;
1325 >        final CountDownLatch latch;
1326 >        int state = NEW;
1327 >        LatchAwaiter(CountDownLatch latch) { this.latch = latch; }
1328 >        public void realRun() throws InterruptedException {
1329 >            state = 1;
1330 >            await(latch);
1331 >            state = 2;
1332 >        }
1333 >    }
1334 >
1335 >    public LatchAwaiter awaiter(CountDownLatch latch) {
1336 >        return new LatchAwaiter(latch);
1337      }
1338  
1339      public void await(CountDownLatch latch) {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines