这个问题实际上与使用Java 8CompletableFuture替换Futures.successfulAsList十分相似。
尽管问题并不完全相同,但相同的答案(来自我自己)应该可以满足您的需求。
您可以结合使用来实现此功能,
allOf()并使用将每个输入的future与链接起来
exceptionally(),这样会使
allOf()立即返回的future
失败:
CompletableFuture<String> a = …, b = …, c = …;CompletableFuture<Void> allWithFailFast = CompletableFuture.allOf(a, b, c);Stream.of(a, b, c) .forEach(f -> f.exceptionally(e -> { allWithFailFast.completeExceptionally(e); return null; }));


