我正面临一个场景,我必须针对给定的参数列表-集合,反复调用服务方法(涉及查询执行)。
List<?> getResuls(List<String> params) {
List<?> results = new ArrayList<>();
// For every value in param call myMethod
params.forEach( param ->
results.add(myMethod ( param )));
return results;
}
myMethod (String s) {
// has series of queries execution based on
// different conditions and returns an object
// Involves HQL
}
请忽略语法错误。
调用次数越多,执行时间越长。
是否可以并行执行myMethod()调用并在所有方法调用完成后获得结果??
我浏览了一些有关 CompletableFuture 的博客,但不确定是否对我的情况有帮助。
任何建议都会更有帮助。
答案 0 :(得分:0)
我不确定parallelStream是否是您在这里寻找的内容...您也可以执行以下操作:
ForkJoinPool forkJoinPool = new ForkJoinPool(processCount//2 maybe);
forkJoinPool.submit(() -> {
youList.parallelStream().forEach {
//add your results to another list?
results.add(myMethod ( param )));
};
}).join();
return results;