--- jsr166/src/test/tck/ThreadPoolExecutorSubclassTest.java 2017/07/17 22:27:31 1.100 +++ jsr166/src/test/tck/ThreadPoolExecutorSubclassTest.java 2021/01/26 13:33:06 1.105 @@ -660,7 +660,9 @@ public class ThreadPoolExecutorSubclassT q); try (PoolCleaner cleaner = cleaner(p, done)) { final CountDownLatch threadStarted = new CountDownLatch(1); - FutureTask[] tasks = new FutureTask[5]; + FutureTask[] rtasks = new FutureTask[5]; + @SuppressWarnings("unchecked") + FutureTask[] tasks = (FutureTask[])rtasks; for (int i = 0; i < tasks.length; i++) { Callable task = new CheckedCallable() { public Boolean realCall() throws InterruptedException { @@ -669,7 +671,7 @@ public class ThreadPoolExecutorSubclassT await(done); return Boolean.TRUE; }}; - tasks[i] = new FutureTask(task); + tasks[i] = new FutureTask(task); p.execute(tasks[i]); } await(threadStarted); @@ -726,7 +728,9 @@ public class ThreadPoolExecutorSubclassT LONG_DELAY_MS, MILLISECONDS, q); try (PoolCleaner cleaner = cleaner(p, done)) { - FutureTask[] tasks = new FutureTask[5]; + FutureTask[] rtasks = new FutureTask[5]; + @SuppressWarnings("unchecked") + FutureTask[] tasks = (FutureTask[])rtasks; for (int i = 0; i < tasks.length; i++) { Callable task = new CheckedCallable() { public Boolean realCall() throws InterruptedException { @@ -734,7 +738,7 @@ public class ThreadPoolExecutorSubclassT await(done); return Boolean.TRUE; }}; - tasks[i] = new FutureTask(task); + tasks[i] = new FutureTask(task); p.execute(tasks[i]); } await(threadStarted); @@ -769,7 +773,7 @@ public class ThreadPoolExecutorSubclassT Runnable waiter = new CheckedRunnable() { public void realRun() { threadsStarted.countDown(); try { - MILLISECONDS.sleep(2 * LONG_DELAY_MS); + MILLISECONDS.sleep(LONGER_DELAY_MS); } catch (InterruptedException success) {} ran.getAndIncrement(); }}; @@ -1292,8 +1296,8 @@ public class ThreadPoolExecutorSubclassT public void testMaximumPoolSizeIllegalArgumentException2() { final ThreadPoolExecutor p = new CustomTPE(2, 3, - LONG_DELAY_MS, - MILLISECONDS,new ArrayBlockingQueue(10)); + LONG_DELAY_MS, MILLISECONDS, + new ArrayBlockingQueue(10)); try (PoolCleaner cleaner = cleaner(p)) { try { p.setMaximumPoolSize(-1); @@ -1642,7 +1646,7 @@ public class ThreadPoolExecutorSubclassT l.add(latchAwaitingStringTask(latch)); l.add(null); try { - e.invokeAny(l, randomTimeout(), MILLISECONDS); + e.invokeAny(l, randomTimeout(), randomTimeUnit()); shouldThrow(); } catch (NullPointerException success) {} latch.countDown(); @@ -1828,7 +1832,7 @@ public class ThreadPoolExecutorSubclassT p.invokeAll(tasks, timeout, MILLISECONDS); assertEquals(tasks.size(), futures.size()); assertTrue(millisElapsedSince(startTime) >= timeout); - for (Future future : futures) + for (Future future : futures) assertTrue(future.isDone()); assertTrue(futures.get(1).isCancelled()); try { @@ -1966,5 +1970,20 @@ public class ThreadPoolExecutorSubclassT } } } + @SuppressWarnings("deprecation") + public void testFinalizeMethodCallsSuperFinalize() { + new CustomTPE(1, 1, + LONG_DELAY_MS, MILLISECONDS, + new LinkedBlockingQueue()) { + + /** + * A finalize method without "throws Throwable", that + * calls super.finalize(). + */ + protected void finalize() { + super.finalize(); + } + }.shutdown(); + } }