繁体   English   中英

Java异步方法执行

[英]Java asynchronous method execution

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

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

任何建议都会更有帮助。

我不确定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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM