--- jsr166/src/jsr166e/CompletableFuture.java 2013/01/02 14:13:12 1.1 +++ jsr166/src/jsr166e/CompletableFuture.java 2013/01/02 17:37:14 1.2 @@ -403,7 +403,7 @@ public class CompletableFuture implem } public final boolean exec() { CompletableFuture d; Throwable ex; - if ((d = this.dst) != null) { + if ((d = this.dst) != null && d.result == null) { try { fn.run(); ex = null; @@ -425,7 +425,7 @@ public class CompletableFuture implem } public final boolean exec() { CompletableFuture d; U u; Throwable ex; - if ((d = this.dst) != null) { + if ((d = this.dst) != null && d.result == null) { try { u = fn.get(); ex = null; @@ -450,7 +450,7 @@ public class CompletableFuture implem } public final boolean exec() { CompletableFuture d; U u; Throwable ex; - if ((d = this.dst) != null) { + if ((d = this.dst) != null && d.result == null) { try { u = fn.apply(arg); ex = null; @@ -477,7 +477,7 @@ public class CompletableFuture implem } public final boolean exec() { CompletableFuture d; V v; Throwable ex; - if ((d = this.dst) != null) { + if ((d = this.dst) != null && d.result == null) { try { v = fn.apply(arg1, arg2); ex = null; @@ -502,7 +502,7 @@ public class CompletableFuture implem } public final boolean exec() { CompletableFuture d; Throwable ex; - if ((d = this.dst) != null) { + if ((d = this.dst) != null && d.result == null) { try { fn.accept(arg); ex = null; @@ -528,7 +528,7 @@ public class CompletableFuture implem } public final boolean exec() { CompletableFuture d; Throwable ex; - if ((d = this.dst) != null) { + if ((d = this.dst) != null && d.result == null) { try { fn.accept(arg1, arg2); ex = null;