17 |
|
import java.util.concurrent.CountDownLatch; |
18 |
|
import java.util.concurrent.Delayed; |
19 |
|
import java.util.concurrent.ExecutionException; |
20 |
– |
import java.util.concurrent.Executors; |
20 |
|
import java.util.concurrent.ExecutorService; |
21 |
|
import java.util.concurrent.Future; |
22 |
|
import java.util.concurrent.RejectedExecutionException; |
44 |
|
} |
45 |
|
|
46 |
|
static class CustomTask<V> implements RunnableScheduledFuture<V> { |
47 |
< |
RunnableScheduledFuture<V> task; |
47 |
> |
private final RunnableScheduledFuture<V> task; |
48 |
|
volatile boolean ran; |
49 |
< |
CustomTask(RunnableScheduledFuture<V> t) { task = t; } |
49 |
> |
CustomTask(RunnableScheduledFuture<V> task) { this.task = task; } |
50 |
|
public boolean isPeriodic() { return task.isPeriodic(); } |
51 |
|
public void run() { |
52 |
|
ran = true; |
418 |
|
public void realRun() throws InterruptedException { |
419 |
|
threadStarted.countDown(); |
420 |
|
assertEquals(0, p.getCompletedTaskCount()); |
421 |
< |
threadProceed.await(); |
421 |
> |
await(threadProceed); |
422 |
|
threadDone.countDown(); |
423 |
|
}}); |
424 |
|
await(threadStarted); |
425 |
|
assertEquals(0, p.getCompletedTaskCount()); |
426 |
|
threadProceed.countDown(); |
427 |
< |
threadDone.await(); |
427 |
> |
await(threadDone); |
428 |
|
long startTime = System.nanoTime(); |
429 |
|
while (p.getCompletedTaskCount() != 1) { |
430 |
|
if (millisElapsedSince(startTime) > LONG_DELAY_MS) |
814 |
|
Runnable task = new CheckedRunnable() { public void realRun() |
815 |
|
throws InterruptedException { |
816 |
|
poolBlocked.countDown(); |
817 |
< |
assertTrue(unblock.await(LONG_DELAY_MS, MILLISECONDS)); |
817 |
> |
await(unblock); |
818 |
|
ran.getAndIncrement(); |
819 |
|
}}; |
820 |
|
List<Future<?>> blockers = new ArrayList<>(); |
822 |
|
List<Future<?>> delayeds = new ArrayList<>(); |
823 |
|
for (int i = 0; i < poolSize; i++) |
824 |
|
blockers.add(p.submit(task)); |
825 |
< |
assertTrue(poolBlocked.await(LONG_DELAY_MS, MILLISECONDS)); |
825 |
> |
await(poolBlocked); |
826 |
|
|
827 |
|
periodics.add(p.scheduleAtFixedRate(countDowner(periodicLatch1), |
828 |
|
1, 1, MILLISECONDS)); |
858 |
|
} |
859 |
|
} |
860 |
|
if (effectivePeriodicPolicy) { |
861 |
< |
assertTrue(periodicLatch1.await(LONG_DELAY_MS, MILLISECONDS)); |
862 |
< |
assertTrue(periodicLatch2.await(LONG_DELAY_MS, MILLISECONDS)); |
861 |
> |
await(periodicLatch1); |
862 |
> |
await(periodicLatch2); |
863 |
|
for (Future<?> periodic : periodics) { |
864 |
|
assertTrue(periodic.cancel(false)); |
865 |
|
assertTrue(periodic.isCancelled()); |
940 |
|
final CountDownLatch latch = new CountDownLatch(1); |
941 |
|
final ExecutorService e = new CustomExecutor(2); |
942 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
943 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
943 |
> |
List<Callable<String>> l = new ArrayList<>(); |
944 |
|
l.add(latchAwaitingStringTask(latch)); |
945 |
|
l.add(null); |
946 |
|
try { |
957 |
|
public void testInvokeAny4() throws Exception { |
958 |
|
final ExecutorService e = new CustomExecutor(2); |
959 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
960 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
960 |
> |
List<Callable<String>> l = new ArrayList<>(); |
961 |
|
l.add(new NPETask()); |
962 |
|
try { |
963 |
|
e.invokeAny(l); |
974 |
|
public void testInvokeAny5() throws Exception { |
975 |
|
final ExecutorService e = new CustomExecutor(2); |
976 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
977 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
977 |
> |
List<Callable<String>> l = new ArrayList<>(); |
978 |
|
l.add(new StringTask()); |
979 |
|
l.add(new StringTask()); |
980 |
|
String result = e.invokeAny(l); |
1012 |
|
public void testInvokeAll3() throws Exception { |
1013 |
|
final ExecutorService e = new CustomExecutor(2); |
1014 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1015 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1015 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1016 |
|
l.add(new StringTask()); |
1017 |
|
l.add(null); |
1018 |
|
try { |
1028 |
|
public void testInvokeAll4() throws Exception { |
1029 |
|
final ExecutorService e = new CustomExecutor(2); |
1030 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1031 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1031 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1032 |
|
l.add(new NPETask()); |
1033 |
|
List<Future<String>> futures = e.invokeAll(l); |
1034 |
|
assertEquals(1, futures.size()); |
1047 |
|
public void testInvokeAll5() throws Exception { |
1048 |
|
final ExecutorService e = new CustomExecutor(2); |
1049 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1050 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1050 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1051 |
|
l.add(new StringTask()); |
1052 |
|
l.add(new StringTask()); |
1053 |
|
List<Future<String>> futures = e.invokeAll(l); |
1076 |
|
public void testTimedInvokeAnyNullTimeUnit() throws Exception { |
1077 |
|
final ExecutorService e = new CustomExecutor(2); |
1078 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1079 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1079 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1080 |
|
l.add(new StringTask()); |
1081 |
|
try { |
1082 |
|
e.invokeAny(l, MEDIUM_DELAY_MS, null); |
1105 |
|
CountDownLatch latch = new CountDownLatch(1); |
1106 |
|
final ExecutorService e = new CustomExecutor(2); |
1107 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1108 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1108 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1109 |
|
l.add(latchAwaitingStringTask(latch)); |
1110 |
|
l.add(null); |
1111 |
|
try { |
1123 |
|
final ExecutorService e = new CustomExecutor(2); |
1124 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1125 |
|
long startTime = System.nanoTime(); |
1126 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1126 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1127 |
|
l.add(new NPETask()); |
1128 |
|
try { |
1129 |
|
e.invokeAny(l, LONG_DELAY_MS, MILLISECONDS); |
1142 |
|
final ExecutorService e = new CustomExecutor(2); |
1143 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1144 |
|
long startTime = System.nanoTime(); |
1145 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1145 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1146 |
|
l.add(new StringTask()); |
1147 |
|
l.add(new StringTask()); |
1148 |
|
String result = e.invokeAny(l, LONG_DELAY_MS, MILLISECONDS); |
1170 |
|
public void testTimedInvokeAllNullTimeUnit() throws Exception { |
1171 |
|
final ExecutorService e = new CustomExecutor(2); |
1172 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1173 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1173 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1174 |
|
l.add(new StringTask()); |
1175 |
|
try { |
1176 |
|
e.invokeAll(l, MEDIUM_DELAY_MS, null); |
1196 |
|
public void testTimedInvokeAll3() throws Exception { |
1197 |
|
final ExecutorService e = new CustomExecutor(2); |
1198 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1199 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1199 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1200 |
|
l.add(new StringTask()); |
1201 |
|
l.add(null); |
1202 |
|
try { |
1212 |
|
public void testTimedInvokeAll4() throws Exception { |
1213 |
|
final ExecutorService e = new CustomExecutor(2); |
1214 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1215 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1215 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1216 |
|
l.add(new NPETask()); |
1217 |
|
List<Future<String>> futures = |
1218 |
|
e.invokeAll(l, MEDIUM_DELAY_MS, MILLISECONDS); |
1232 |
|
public void testTimedInvokeAll5() throws Exception { |
1233 |
|
final ExecutorService e = new CustomExecutor(2); |
1234 |
|
try (PoolCleaner cleaner = cleaner(e)) { |
1235 |
< |
List<Callable<String>> l = new ArrayList<Callable<String>>(); |
1235 |
> |
List<Callable<String>> l = new ArrayList<>(); |
1236 |
|
l.add(new StringTask()); |
1237 |
|
l.add(new StringTask()); |
1238 |
|
List<Future<String>> futures = |