У меня есть сценарий, в котором я должен выполнить 5 потоков асинхронно для одного и того же вызываемого. Насколько я понимаю, есть два варианта:
1), используя submit (Callable)
ExecutorService executorService = Executors.newFixedThreadPool(5);
List<Future<String>> futures = new ArrayList<>();
for(Callable callableItem: myCallableList){
futures.add(executorService.submit(callableItem));
}
2), используя invokeAll (Коллекции Callable)
ExecutorService executorService = Executors.newFixedThreadPool(5);
List<Future<String>> futures = executorService.invokeAll(myCallableList));
- Каким должен быть предпочтительный способ?
- Есть ли какой-либо недостаток или влияние на производительность в любом из них по сравнению с другим?