1

我有一堆方法在使用Phaser(总是有 1 方),我可以通过使用来替换每种方法CompletableFuture。结果是一样的。使用时有什么隐藏的好处CompletableFuture吗?

例如:

带有 CompletableFuture 的版本 1:

void queryVersion1() {
    var future = new CompletableFuture<Void>();
    asyncCall(future);
    future.join();
}

void asyncCall(CompletableFuture<Void> future){
    ...
    future.complete(null);
}

带有 Phaser 的版本 2:

void queryVersion2() {
    var phaser = new Phaser(1);
    asyncCall(phaser);
    phaser.awaitAdvance(0);
}

void asyncCall(Phaser phaser){
    ...
   phaser.arriveAndDeregister();
}

我应该更喜欢哪一个,为什么?哪一个在内存/线程池/等方面表现更好。

4

0 回答 0