问题描述
我有“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 (将#修改为@)