我正在使用三个流,这些流需要调用http请求。所有电话都是独立的。因此,我使用并行流并从http响应中收集结果。
目前,我正在使用三个单独的并行流进行这些操作。
Map<String, ClassA> list1 = listOfClassX.stream().parallel()
.map(item -> {
ClassA instanceA = httpGetCall(item.id);
return instanceA;
})
.collect(Collectors.toConcurrentMap(item -> item.id, item -> item);
Map<String, ClassB> list1 = listOfClassY.stream().parallel()
.map(item -> {
ClassB instanceB = httpGetCall(item.id);
return instanceB;
})
.collect(Collectors.toConcurrentMap(item -> item.id, item -> item);
Map<String, ClassC> list1 = listOfClassZ.stream().parallel()
.map(item -> {
ClassC instanceC = httpGetCall(item.id);
return instanceC;
})
.collect(Collectors.toConcurrentMap(item -> item.id, item -> item);
尽管每个调用是独立的,但它分别一个接一个地运行三个并行流。
在这种情况下,普通的fork联接池是否可以帮助优化此处的线程池使用?
还有其他方法可以进一步优化此代码的性能吗?