是使用 invokeAll 还是 submit - java Executor service
我有一个场景,我必须为相同的可调用异步执行5个线程。据我所知,有两种选择:
1) 使用提交(可调用)
ExecutorService executorService = Executors.newFixedThreadPool(5);
List<Future<String>> futures = new ArrayList<>();
for(Callable callableItem: myCallableList){
futures.add(executorService.submit(callableItem));
}
2) 使用 invokeAll(可调用的集合)
ExecutorService executorService = Executors.newFixedThreadPool(5);
List<Future<String>> futures = executorService.invokeAll(myCallableList));
- 首选方式应该是什么?
- 与另一个相比,它们中的任何一个是否有任何缺点或性能影响?