![](/img/trans.png)
[英]New to Java, and not sure what I'm doing wrong. My If statements aren't working
[英]What I'm doing wrong with CompletableFuture that aren't executing in parallel
我将一个列表分成了 5 个部分,我想使用 restTemplate 并行执行,我有以下方法:
@Async
private CompletableFuture<List<Cidade>> MontarCidadesPorEstado(List<Cidade> listaCidades, List<UF> estado) {
estado.forEach(es -> {
Map<String, String> param = new HashMap<String, String>();
param.put("UF", es.getSigla());
Cidade[] cidades = restTemplate.getForObject(url, Cidade[].class, param);
listaCidades.addAll(Arrays.asList(cidades));
});
return CompletableFuture.completedFuture(listaCidades);
}
因此创建了一个CompletableFuture
列表以并行执行所有这些,但是当将每个CompletableFuture
添加到列表中时,它已经在执行它而不使其并行,例如:
List<List<UF>> subSets = Lists.partition(estados, 5);
List<CompletableFuture<List<Cidade>>> lstCompletableFuture = new ArrayList();
subSets.forEach(estado -> {
lstCompletableFuture.add(MontarCidadesPorEstado(listaCidades, estado));
});
CompletableFuture.allOf(lstCompletableFuture.toArray(new CompletableFuture[lstCompletableFuture.size()]));
我做错了什么,我认为当我调用CompletableFuture.allOf
时它应该执行方法 MontarCidadesPorEstado 。
我假设 MontarCidadesPorEstado 是一个本地方法调用。
因此调用是本地的,它不是通过代理 go 并且不是异步的。
您已经在另一个 bean 中定义了 MontarCidadesPorEstado 方法,然后调用这个 bean。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.