java - 将多个 CompletableFuture 与返回结果合二为一
问题描述
我有“N”个任务,应该从“M”个服务器并行异步完成。我将任务块发送到作为结果()返回的每个服务器方法,CompletableFutures<Result>
然后我必须从中获取结果。这很好用,但我需要将这些“块”组合成一个CompletableFuture<Result>
包含所有结果的块。
现在,我返回到 caller Collection<CompletableFutures<Result>>
,其中每个块都是来自不同服务器的响应,但这应该更改为 single 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;
}
解决方案
推荐阅读
- python - Python 平衡反应常数
- c++ - 输入 £ 符号时调试断言失败
- javascript - 反应原生,博览会。看起来 IF 功能不起作用
- oracle - 合并语句问题 - 错误无法在源表中获得一组稳定的行
- java - JTS:ShapeReader 转换并不总是能正确识别孔
- java - 如何更改 onClick 上的按钮文本?
- python - (Python)使用循环将元素添加到列表中,在每次迭代后将处理元素的实际状态附加到此列表中
- python - 预期的 str、bytes 或 os.PathLike 对象,而不是元组
- javascript - 将缓冲区数组转换为图像
- python-3.x - Python参数化格式