8 |
|
import java.util.*; |
9 |
|
import java.util.concurrent.*; |
10 |
|
import static java.util.concurrent.TimeUnit.MILLISECONDS; |
11 |
< |
import java.util.concurrent.atomic.*; |
11 |
> |
import java.util.concurrent.atomic.AtomicInteger; |
12 |
|
|
13 |
|
public class ScheduledExecutorSubclassTest extends JSR166TestCase { |
14 |
|
public static void main(String[] args) { |
57 |
|
protected <V> RunnableScheduledFuture<V> decorateTask(Callable<V> c, RunnableScheduledFuture<V> task) { |
58 |
|
return new CustomTask<V>(task); |
59 |
|
} |
60 |
< |
CustomExecutor(int corePoolSize) { super(corePoolSize);} |
60 |
> |
CustomExecutor(int corePoolSize) { super(corePoolSize); } |
61 |
|
CustomExecutor(int corePoolSize, RejectedExecutionHandler handler) { |
62 |
|
super(corePoolSize, handler); |
63 |
|
} |
370 |
|
threadProceed.await(); |
371 |
|
threadDone.countDown(); |
372 |
|
}}); |
373 |
< |
assertTrue(threadStarted.await(SMALL_DELAY_MS, MILLISECONDS)); |
373 |
> |
await(threadStarted); |
374 |
|
assertEquals(0, p.getCompletedTaskCount()); |
375 |
|
threadProceed.countDown(); |
376 |
|
threadDone.await(); |
1204 |
|
l.add(new StringTask()); |
1205 |
|
List<Future<String>> futures = |
1206 |
|
e.invokeAll(l, SHORT_DELAY_MS, MILLISECONDS); |
1207 |
< |
assertEquals(3, futures.size()); |
1208 |
< |
Iterator<Future<String>> it = futures.iterator(); |
1209 |
< |
Future<String> f1 = it.next(); |
1210 |
< |
Future<String> f2 = it.next(); |
1211 |
< |
Future<String> f3 = it.next(); |
1212 |
< |
assertTrue(f1.isDone()); |
1213 |
< |
assertTrue(f2.isDone()); |
1214 |
< |
assertTrue(f3.isDone()); |
1215 |
< |
assertFalse(f1.isCancelled()); |
1216 |
< |
assertTrue(f2.isCancelled()); |
1207 |
> |
assertEquals(l.size(), futures.size()); |
1208 |
> |
for (Future future : futures) |
1209 |
> |
assertTrue(future.isDone()); |
1210 |
> |
assertFalse(futures.get(0).isCancelled()); |
1211 |
> |
assertTrue(futures.get(1).isCancelled()); |
1212 |
|
} finally { |
1213 |
|
joinPool(e); |
1214 |
|
} |