652 |
|
} |
653 |
|
|
654 |
|
public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) { |
655 |
< |
ArrayList<ForkJoinTask<T>> ts = |
655 |
> |
ArrayList<ForkJoinTask<T>> forkJoinTasks = |
656 |
|
new ArrayList<ForkJoinTask<T>>(tasks.size()); |
657 |
< |
for (Callable<T> c : tasks) |
658 |
< |
ts.add(new AdaptedCallable<T>(c)); |
659 |
< |
invoke(new InvokeAll<T>(ts)); |
660 |
< |
return (List<Future<T>>) (List) ts; |
657 |
> |
for (Callable<T> task : tasks) |
658 |
> |
forkJoinTasks.add(new AdaptedCallable<T>(task)); |
659 |
> |
invoke(new InvokeAll<T>(forkJoinTasks)); |
660 |
> |
|
661 |
> |
@SuppressWarnings({"unchecked", "rawtypes"}) |
662 |
> |
List<Future<T>> futures = (List<Future<T>>) (List) forkJoinTasks; |
663 |
> |
return futures; |
664 |
|
} |
665 |
|
|
666 |
|
static final class InvokeAll<T> extends RecursiveAction { |