Java 使用具有多个并行流的fork-join池的有效方法
我使用三个需要调用http请求的流。所有呼叫都是独立的。因此,我使用并行流并从http响应收集结果 目前,我正在为这些操作使用三个独立的并行流Java 使用具有多个并行流的fork-join池的有效方法,java,java-8,java-stream,Java,Java 8,Java Stream,我使用三个需要调用http请求的流。所有呼叫都是独立的。因此,我使用并行流并从http响应收集结果 目前,我正在为这些操作使用三个独立的并行流 Map<String, ClassA> list1 = listOfClassX.stream().parallel() .map(item -> { ClassA instanceA = httpGetCall(item.id); return instanceA;
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);
Map list1=listOfClassX.stream().parallel()
.地图(项目->{
ClassA instanceA=httpGetCall(item.id);
返回instanceA;
})
.collect(Collectors.toConcurrentMap(item->item.id,item->item);
Map list1=listOfClassY.stream().parallel()
.地图(项目->{
ClassB instanceB=httpGetCall(item.id);
返回实例b;
})
.collect(Collectors.toConcurrentMap(item->item.id,item->item);
Map list1=listOfClassZ.stream().parallel()的列表
.地图(项目->{
ClassC instanceC=httpGetCall(item.id);
返回实例;
})
.collect(Collectors.toConcurrentMap(item->item.id,item->item);
虽然每个调用都是独立的,但它一个接一个地分别运行三个并行流
在这种情况下,公共fork-join池是否有助于优化线程池的使用
还有其他方法可以进一步优化此代码的性能吗?我认为您可以使用
CompletableFuture.allOf()
在这种情况下。尤其是每个调用都是独立的。这将对您有所帮助。流针对CPU限制的任务进行了优化,因此即使是单个并行流也可能不适合I/O限制的任务。请使用配置为所需并发级别的ExecutorService
。如果可行,您可以将其与CompletableFuture
结合使用e、 我认为您可以使用CompletableFuture.allOf()
在这种情况下。尤其是每个调用都是独立的。这将对您有所帮助。流针对CPU限制的任务进行了优化,因此即使是单个并行流也可能不适合I/O限制的任务。请使用配置为所需并发级别的ExecutorService
。如果可行,您可以将其与CompletableFuture
结合使用E