多线程调用接口处理结果
直接上代码
// An highlighted block
//结果接受
List<Future<Map<String, String>>> futureList = new ArrayList<>();
//定义线程池
ExecutorService threadPool = Executors.newFixedThreadPool(requestUrlList.size());
try {
for (String api : requestUrlList) {
Future<Map<String, String>> future = threadPool.submit(new Callable<Map<String, String>>() {
@Override
public Map<String, String> call() {
//接口调用
return getDownstreamNodeData(api, map);
}
});
futureList.add(future);
}
//结果处理
for (Future<Map<String, String>> mapFuture : futureList) {
if (!mapFuture.get().isEmpty()) {
resultMap.putAll(mapFuture.get());
}
}
} catch (Exception e) {
oLog.info("发生了异常:", e.getMessage());
}
//关闭线程
threadPool.shutdown();