Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

CompletableFuture.thenCombine()

Объединяет результаты двух независимых задач, когда готовы обе.

Доступно с: Java 8

Синтаксис

<U, V> CompletableFuture<V> thenCombine(CompletionStage<? extends U> other, BiFunction<? super T, ? super U, ? extends V> fn)

Параметры

ПараметрТипОписание
otherCompletionStage<? extends U>Вторая независимая задача.
fnBiFunction<? super T, ? super U, ? extends V>Объединяет оба результата.

Возвращаемое значение

CompletableFuture<V>Результат объединения.

Примеры

Цена и курс загружаются параллельно:

void main() {
    var price = CompletableFuture.supplyAsync(() -> 120.0);
    var rate = CompletableFuture.supplyAsync(() -> 0.92);
    double inEuro = price.thenCombine(rate, (p, r) -> p * r).join();
    IO.println(inEuro);
}

Результат:

110.4

Примечания

Обе задачи выполняются одновременно, общее время — как у самой долгой. Для произвольного числа задач используйте CompletableFuture.allOf(...), а затем join() каждой.

См. также

  • CompletableFuture.thenApply() — Добавляет шаг, который преобразует результат, когда тот будет готов.
  • CompletableFuture.supplyAsync() — Запускает вычисление асинхронно и возвращает `CompletableFuture`.
  • BiFunction — Функция двух аргументов.

Вопросы и ответы по теме

В учебнике

  • CompletableFuture — Асинхронные цепочки в Java — CompletableFuture.supplyAsync, thenApply, thenAccept, thenCombine, allOf, обработка ошибок через exceptionally и join.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.