我想知道使用zip
执行CompletableFuture
的官方机制。
到目前为止,我只使用thenCombine
运算符。这是我的例子。
@Test
public void zip() throws InterruptedException {
CompletableFuture<Either<Integer, String>> completableFuture = CompletableFuture.supplyAsync(this::getValue);
CompletableFuture<Either<Integer, String>> completableFuture1 = CompletableFuture.supplyAsync(this::getValue);
CompletableFuture<Either<Integer, String>> completableFuture2 = CompletableFuture.supplyAsync(this::getValue);
completableFuture
.thenCombine(completableFuture1, (c1, c2) -> new Right<>(c1.right().get() + "|" + c2.right().get()))
.thenCombine(completableFuture2, (c1, c2) -> new Right<>(c1.right().get() + "|" + c2.right().get()))
.whenComplete((result, throwable) -> System.out.println(result.right().get()));
Thread.sleep(2000);
}
对我而言,thenCombine
运算符的使用更像merge
的{{1}}运算符。
知道是否有更好的方法吗?
我只想并行运行三个进程并压缩结果。
问候。