reduce list< completablefuture< t>>

hujrc8aj  于 2021-07-05  发布在  Java
关注(0)|答案(0)|浏览(183)

当给出ints时

List<Integer> ints = IntStream.range(0, 1000).boxed().collect(Collectors.toList());

通过java流api,我们可以减少它们

MyValue myvalue = ints
                .parallelStream()
                .map(x -> toMyValue(x))
                .reduce((t, t2) -> t.combine(t2))
                .get();

在这个例子中,什么对我来说是重要的
项目将在多个线程中减少
早期Map的项目将提前减少
不是所有的结果 toMyValue() 将同时加载
现在我想做同样的处理 CompletableFuture 应用程序编程接口。
做Map,我做了,

List<CompeletableFuture<MyValue>> myValueFutures = ints
.stream()
.map(x -> CompletableFuture.supplyAsync(() -> toMyValue(x), MY_THREAD_POOL))
.collect(Collectors.toList());

现在我不知道如何减少 List<CompeletableFuture<MyValue>> myValueFutures 单身 MyValue .
并行流提供了方便的api,但由于这些问题,我不想使用流api。
并行流在处理过程中很难停止。
当某些工作进程被io阻塞时,并行流的活动工作进程计数可能会超过并行进程数。这有助于最大限度地提高cpu利用率,但可能会出现内存开销(甚至oom)。
有没有办法减少可竞争的未来?一个接一个带外流reduce api?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题