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

Comparing jsr166/src/main/java/util/concurrent/ExecutorCompletionService.java (file contents):
Revision 1.25 by jsr166, Tue May 3 23:04:58 2016 UTC vs.
Revision 1.26 by jsr166, Sun May 22 01:09:21 2016 UTC

# Line 27 | Line 27 | package java.util.concurrent;
27   * void solve(Executor e,
28   *            Collection<Callable<Result>> solvers)
29   *     throws InterruptedException, ExecutionException {
30 < *   CompletionService<Result> ecs
30 > *   CompletionService<Result> cs
31   *       = new ExecutorCompletionService<>(e);
32 < *   for (Callable<Result> s : solvers)
33 < *     ecs.submit(s);
34 < *   int n = solvers.size();
35 < *   for (int i = 0; i < n; ++i) {
36 < *     Result r = ecs.take().get();
32 > *   solvers.forEach((solver) -> cs.submit(solver));
33 > *   for (int i = solvers.size(); i > 0; i--) {
34 > *     Result r = cs.take().get();
35   *     if (r != null)
36   *       use(r);
37   *   }
# Line 47 | Line 45 | package java.util.concurrent;
45   * void solve(Executor e,
46   *            Collection<Callable<Result>> solvers)
47   *     throws InterruptedException {
48 < *   CompletionService<Result> ecs
48 > *   CompletionService<Result> cs
49   *       = new ExecutorCompletionService<>(e);
50   *   int n = solvers.size();
51   *   List<Future<Result>> futures = new ArrayList<>(n);
52   *   Result result = null;
53   *   try {
54 < *     for (Callable<Result> s : solvers)
55 < *       futures.add(ecs.submit(s));
58 < *     for (int i = 0; i < n; ++i) {
54 > *     solvers.forEach((solver) -> futures.add(cs.submit(solver)));
55 > *     for (int i = n; i > 0; i--) {
56   *       try {
57 < *         Result r = ecs.take().get();
57 > *         Result r = cs.take().get();
58   *         if (r != null) {
59   *           result = r;
60   *           break;
61   *         }
62   *       } catch (ExecutionException ignore) {}
63   *     }
64 < *   }
65 < *   finally {
69 < *     for (Future<Result> f : futures)
70 < *       f.cancel(true);
64 > *   } finally {
65 > *     futures.forEach((future) -> future.cancel(true));
66   *   }
67   *
68   *   if (result != null)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines