Выполнение асинхронного метода Java - PullRequest
0 голосов
/ 11 октября 2018

Я сталкиваюсь со сценарием, в котором мне приходится неоднократно вызывать сервисный метод (который включает выполнение запросов) для данного списка параметров - коллекции.

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 голосов
/ 11 октября 2018

Я не уверен, что вы ищете здесь ParallelsStream ... вы также можете сделать это:

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;
...