使用线程池和FutureTask实现多线程读取列表
时间: 2023-02-08 10:22:50 浏览: 69
使用线程池和FutureTask实现多线程读取列表的方法如下:
1. 首先创建一个线程池,使用Executors.newFixedThreadPool()方法创建。
2. 然后将列表中的每个元素封装成一个Callable对象。
3. 接着将Callable对象封装成FutureTask对象。
4. 最后使用线程池的submit()方法将FutureTask对象提交给线程池进行执行。
5. 可以使用FutureTask的get()方法获取执行结果。
代码示例如下:
```
ExecutorService executor = Executors.newFixedThreadPool(10);
List<Future<Integer>> futureList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
Callable<Integer> callable = new MyCallable(list.get(i));
FutureTask<Integer> futureTask = new FutureTask<Integer>(callable);
futureList.add(executor.submit(futureTask));
}
for (Future<Integer> future : futureList) {
int result = future.get();
System.out.println(result);
}
executor.shutdown();
```
其中MyCallable是实现了Callable接口的类,用于对每个元素进行处理。