Я ищу неблокирующий способ суммировать поток CompleteableFuture<BigDecimal>
.
Я уже нашел темы, тесно связанные с этой проблемой, например this .
Но, к сожалению, в моем случае BigDecimal
упакован в CompleteableFuture, и поэтому мне нужно сначала дождаться завершения.
В конце я хотел бы получить еще одно CompleteableFuture, содержащее сумму всех фьючерсов в потоке после его завершения.
EDIT:
На самом деле мне удалось найти следующее решение:
Stream<CompletableFuture<BigDecimal>> lotOfWork;
CompletableFuture.supplyAsync(() -> lotOfWork.map(CompletableFuture::join)
.reduce(
BigDecimal.valueOf(0.0),
BigDecimal::add
)
);
Но поскольку здесь не используется ни один из CompletionStage методов, я уверен, что есть еще лучший способ сделать эту работу.