ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/jdk7/java/util/concurrent/ForkJoinPool.java
(Generate patch)

Comparing jsr166/src/jdk7/java/util/concurrent/ForkJoinPool.java (file contents):
Revision 1.8 by jsr166, Sat Jan 19 20:39:43 2013 UTC vs.
Revision 1.9 by jsr166, Tue Jan 22 23:00:06 2013 UTC

# Line 2705 | Line 2705 | public class ForkJoinPool extends Abstra
2705          // In previous versions of this class, this method constructed
2706          // a task to run ForkJoinTask.invokeAll, but now external
2707          // invocation of multiple tasks is at least as efficient.
2708 <        List<ForkJoinTask<T>> fs = new ArrayList<ForkJoinTask<T>>(tasks.size());
2709 <        // Workaround needed because method wasn't declared with
2710 <        // wildcards in return type but should have been.
2711 <        @SuppressWarnings({"unchecked", "rawtypes"})
2712 <            List<Future<T>> futures = (List<Future<T>>) (List) fs;
2708 >        ArrayList<Future<T>> futures = new ArrayList<Future<T>>(tasks.size());
2709  
2710          boolean done = false;
2711          try {
2712              for (Callable<T> t : tasks) {
2713                  ForkJoinTask<T> f = new ForkJoinTask.AdaptedCallable<T>(t);
2714                  externalPush(f);
2715 <                fs.add(f);
2715 >                futures.add(f);
2716              }
2717 <            for (ForkJoinTask<T> f : fs)
2718 <                f.quietlyJoin();
2717 >            for (int i = 0, size = futures.size(); i < size; i++)
2718 >                ((ForkJoinTask<?>)futures.get(i)).quietlyJoin();
2719              done = true;
2720              return futures;
2721          } finally {
2722              if (!done)
2723 <                for (ForkJoinTask<T> f : fs)
2724 <                    f.cancel(false);
2723 >                for (int i = 0, size = futures.size(); i < size; i++)
2724 >                    futures.get(i).cancel(false);
2725          }
2726      }
2727  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines