【发布时间】:2023-03-10 01:31:01
【问题描述】:
我有一个场景,我必须为同一个可调用对象异步执行 5 个线程。据我了解,有两种选择:
1) 使用提交(可调用)
ExecutorService executorService = Executors.newFixedThreadPool(5);
List<Future<String>> futures = new ArrayList<>();
for(Callable callableItem: myCallableList){
futures.add(executorService.submit(callableItem));
}
2) 使用invokeAll(Collections of Callable)
ExecutorService executorService = Executors.newFixedThreadPool(5);
List<Future<String>> futures = executorService.invokeAll(myCallableList));
- 首选的方式应该是什么?
- 与另一个相比,它们中的任何一个是否存在任何劣势或性能影响?
【问题讨论】:
标签: java concurrency executorservice java.util.concurrent