将多个 CompletableFuture 与返回结果合二为一

问题描述

我有“N”个任务,应该从“M”个服务器并行异步完成。我将任务块发送到作为结果返回的每个服务器方法CompletableFutures<Result>),然后我必须从中获取结果。这工作正常,但我需要将这些“块”组合成一个 CompletableFuture<Result> 来保存所有结果。

现在,我返回调用Collection<CompletableFutures<Result>>,其中每个块都是来自不同服务器的响应,但这应该更改为单个 CompletableFuture<Result>

我有什么建议可以实现这一目标吗?我不想链接任务,因为我需要并行执行。 CompletableFuture.allOf() 也不是解决方案,因为它是 VOID 并且无法得到结果。

我目前的方法是这样的:

private Collection<CompletableFutures<Result>> parallelExecute() {
    Collection<CompletableFutures<Result>> result = new ArrayList<>();
    for (int i = 0; i < servers.length; i++) {
        CompletableFutures<Result> partResult = server.execute();   
        result.add(partResult );
    }
    return result; 
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)