Java异步方法执行

时间:2018-10-11 20:11:10

标签: java asynchronous java-8 nonblocking completable-future

我正面临一个场景,我必须针对给定的参数列表-集合,反复调用服务方法(涉及查询执行)。

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 的博客,但不确定是否对我的情况有帮助。

任何建议都会更有帮助。

1 个答案:

答案 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;