Замените Phaser на CompletableFuture - PullRequest
       30

Замените Phaser на CompletableFuture

1 голос
/ 23 февраля 2020

У меня есть куча методов, использующих Phaser (с всегда 1 стороной), и я мог бы заменить каждый метод, используя CompletableFuture. Результат будет таким же. Есть ли какие-то скрытые преимущества при использовании CompletableFuture?

Например:

версия 1 с CompletableFuture:

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

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

версия 2 с Phaser:

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

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

Какой из них я предпочитаю и почему? Какой из них работает лучше с точки зрения памяти / пула потоков / et c.

...