18 |
|
import java.util.concurrent.CancellationException; |
19 |
|
import java.util.concurrent.CountDownLatch; |
20 |
|
import java.util.concurrent.ExecutionException; |
21 |
– |
import java.util.concurrent.Executors; |
21 |
|
import java.util.concurrent.ExecutorService; |
22 |
|
import java.util.concurrent.Future; |
23 |
|
import java.util.concurrent.FutureTask; |
27 |
|
import java.util.concurrent.SynchronousQueue; |
28 |
|
import java.util.concurrent.ThreadFactory; |
29 |
|
import java.util.concurrent.ThreadPoolExecutor; |
31 |
– |
import java.util.concurrent.TimeUnit; |
30 |
|
import java.util.concurrent.atomic.AtomicInteger; |
31 |
|
|
32 |
|
import junit.framework.Test; |
274 |
|
} |
275 |
|
|
276 |
|
/** |
277 |
+ |
* The default rejected execution handler is AbortPolicy. |
278 |
+ |
*/ |
279 |
+ |
public void testDefaultRejectedExecutionHandler() { |
280 |
+ |
final ThreadPoolExecutor p = |
281 |
+ |
new ThreadPoolExecutor(1, 2, |
282 |
+ |
LONG_DELAY_MS, MILLISECONDS, |
283 |
+ |
new ArrayBlockingQueue<Runnable>(10)); |
284 |
+ |
try (PoolCleaner cleaner = cleaner(p)) { |
285 |
+ |
assertTrue(p.getRejectedExecutionHandler() |
286 |
+ |
instanceof ThreadPoolExecutor.AbortPolicy); |
287 |
+ |
} |
288 |
+ |
} |
289 |
+ |
|
290 |
+ |
/** |
291 |
|
* getRejectedExecutionHandler returns handler in constructor if not set |
292 |
|
*/ |
293 |
|
public void testGetRejectedExecutionHandler() { |
549 |
|
*/ |
550 |
|
public void testGetQueue() throws InterruptedException { |
551 |
|
final CountDownLatch done = new CountDownLatch(1); |
552 |
< |
final BlockingQueue<Runnable> q = new ArrayBlockingQueue<Runnable>(10); |
552 |
> |
final BlockingQueue<Runnable> q = new ArrayBlockingQueue<>(10); |
553 |
|
final ThreadPoolExecutor p = |
554 |
|
new ThreadPoolExecutor(1, 1, |
555 |
|
LONG_DELAY_MS, MILLISECONDS, |
581 |
|
*/ |
582 |
|
public void testRemove() throws InterruptedException { |
583 |
|
final CountDownLatch done = new CountDownLatch(1); |
584 |
< |
BlockingQueue<Runnable> q = new ArrayBlockingQueue<Runnable>(10); |
584 |
> |
BlockingQueue<Runnable> q = new ArrayBlockingQueue<>(10); |
585 |
|
final ThreadPoolExecutor p = |
586 |
|
new ThreadPoolExecutor(1, 1, |
587 |
|
LONG_DELAY_MS, MILLISECONDS, |
616 |
|
public void testPurge() throws InterruptedException { |
617 |
|
final CountDownLatch threadStarted = new CountDownLatch(1); |
618 |
|
final CountDownLatch done = new CountDownLatch(1); |
619 |
< |
final BlockingQueue<Runnable> q = new ArrayBlockingQueue<Runnable>(10); |
619 |
> |
final BlockingQueue<Runnable> q = new ArrayBlockingQueue<>(10); |
620 |
|
final ThreadPoolExecutor p = |
621 |
|
new ThreadPoolExecutor(1, 1, |
622 |
|
LONG_DELAY_MS, MILLISECONDS, |
1125 |
|
await(done); |
1126 |
|
}}; |
1127 |
|
for (int i = 0; i < 2; ++i) |
1128 |
< |
p.submit(Executors.callable(task)); |
1128 |
> |
p.execute(task); |
1129 |
|
for (int i = 0; i < 2; ++i) { |
1130 |
|
try { |
1131 |
|
p.execute(task); |
1520 |
|
LONG_DELAY_MS, MILLISECONDS, |
1521 |
|
new ArrayBlockingQueue<Runnable>(10)); |
1522 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1523 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1523 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1524 |
|
l.add(latchAwaitingStringTask(latch)); |
1525 |
|
l.add(null); |
1526 |
|
try { |
1540 |
|
LONG_DELAY_MS, MILLISECONDS, |
1541 |
|
new ArrayBlockingQueue<Runnable>(10)); |
1542 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1543 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1543 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1544 |
|
l.add(new NPETask()); |
1545 |
|
try { |
1546 |
|
e.invokeAny(l); |
1560 |
|
LONG_DELAY_MS, MILLISECONDS, |
1561 |
|
new ArrayBlockingQueue<Runnable>(10)); |
1562 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1563 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1563 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1564 |
|
l.add(new StringTask()); |
1565 |
|
l.add(new StringTask()); |
1566 |
|
String result = e.invokeAny(l); |
1607 |
|
LONG_DELAY_MS, MILLISECONDS, |
1608 |
|
new ArrayBlockingQueue<Runnable>(10)); |
1609 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1610 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1610 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1611 |
|
l.add(new StringTask()); |
1612 |
|
l.add(null); |
1613 |
|
try { |
1626 |
|
LONG_DELAY_MS, MILLISECONDS, |
1627 |
|
new ArrayBlockingQueue<Runnable>(10)); |
1628 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1629 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1629 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1630 |
|
l.add(new NPETask()); |
1631 |
|
List<Future<String>> futures = e.invokeAll(l); |
1632 |
|
assertEquals(1, futures.size()); |
1648 |
|
LONG_DELAY_MS, MILLISECONDS, |
1649 |
|
new ArrayBlockingQueue<Runnable>(10)); |
1650 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1651 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1651 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1652 |
|
l.add(new StringTask()); |
1653 |
|
l.add(new StringTask()); |
1654 |
|
List<Future<String>> futures = e.invokeAll(l); |
1683 |
|
LONG_DELAY_MS, MILLISECONDS, |
1684 |
|
new ArrayBlockingQueue<Runnable>(10)); |
1685 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1686 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1686 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1687 |
|
l.add(new StringTask()); |
1688 |
|
try { |
1689 |
|
e.invokeAny(l, MEDIUM_DELAY_MS, null); |
1719 |
|
LONG_DELAY_MS, MILLISECONDS, |
1720 |
|
new ArrayBlockingQueue<Runnable>(10)); |
1721 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1722 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1722 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1723 |
|
l.add(latchAwaitingStringTask(latch)); |
1724 |
|
l.add(null); |
1725 |
|
try { |
1740 |
|
new ArrayBlockingQueue<Runnable>(10)); |
1741 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1742 |
|
long startTime = System.nanoTime(); |
1743 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1743 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1744 |
|
l.add(new NPETask()); |
1745 |
|
try { |
1746 |
|
e.invokeAny(l, LONG_DELAY_MS, MILLISECONDS); |
1762 |
|
new ArrayBlockingQueue<Runnable>(10)); |
1763 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1764 |
|
long startTime = System.nanoTime(); |
1765 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1765 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1766 |
|
l.add(new StringTask()); |
1767 |
|
l.add(new StringTask()); |
1768 |
|
String result = e.invokeAny(l, LONG_DELAY_MS, MILLISECONDS); |
1796 |
|
LONG_DELAY_MS, MILLISECONDS, |
1797 |
|
new ArrayBlockingQueue<Runnable>(10)); |
1798 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1799 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1799 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1800 |
|
l.add(new StringTask()); |
1801 |
|
try { |
1802 |
|
e.invokeAll(l, MEDIUM_DELAY_MS, null); |
1829 |
|
LONG_DELAY_MS, MILLISECONDS, |
1830 |
|
new ArrayBlockingQueue<Runnable>(10)); |
1831 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1832 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1832 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1833 |
|
l.add(new StringTask()); |
1834 |
|
l.add(null); |
1835 |
|
try { |
1848 |
|
LONG_DELAY_MS, MILLISECONDS, |
1849 |
|
new ArrayBlockingQueue<Runnable>(10)); |
1850 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1851 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1851 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1852 |
|
l.add(new NPETask()); |
1853 |
|
List<Future<String>> futures = |
1854 |
|
e.invokeAll(l, LONG_DELAY_MS, MILLISECONDS); |
1871 |
|
LONG_DELAY_MS, MILLISECONDS, |
1872 |
|
new ArrayBlockingQueue<Runnable>(10)); |
1873 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1874 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1874 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1875 |
|
l.add(new StringTask()); |
1876 |
|
l.add(new StringTask()); |
1877 |
|
List<Future<String>> futures = |