我正在寻找一种非阻塞方式来汇总CompleteableFuture<BigDecimal>
流。
我已经找到与该问题密切相关的主题,例如this。
但是不幸的是,我确实将BigDecimal
包装到CompleteableFuture中,因此我需要首先等待完成。
最后,我想获得另一个CompleteableFuture,它包含Stream中所有Future的总和,一旦完成。
编辑: 实际上,我确实设法找到了以下解决方案:
Stream<CompletableFuture<BigDecimal>> lotOfWork;
CompletableFuture.supplyAsync(() -> lotOfWork.map(CompletableFuture::join)
.reduce(
BigDecimal.valueOf(0.0),
BigDecimal::add
)
);
但是,由于此方法未使用任何CompletionStage方法,因此,我敢肯定有一种更好的方法可以完成这项工作。
答案 0 :(得分:1)
这是您直接建议的CompletableFuture :: thenCombine解决方案
我宁愿不强制执行归约顺序但在javadoc中找不到归约顺序的解决方案。
format