java ThreadPoolExecutor 创建5个线程池每个线程池平均分配list里面的数据list大小有400多条
可以使用ExecutorService的newFixedThreadPool方法创建线程池,指定线程池大小为5。然后将list分成5份,每份大小为list大小除以5再加1,以保证每个线程池平均分配list里面的数据。最后,将每个线程池分配到的list传入一个Runnable实例中,通过ExecutorService的submit方法提交给线程池执行。
示例代码:
ExecutorService executorService = Executors.newFixedThreadPool(5);
List<String> list = // 获取包含400多条数据的List
int chunkSize = (int) Math.ceil(list.size() / 5.0); // 每份大小为list大小除以5再加1
for (int i = 0; i < list.size(); i += chunkSize) {
int endIndex = Math.min(i + chunkSize, list.size());
List<String> subList = list.subList(i, endIndex);
executorService.submit(new MyRunnable(subList));
}
executorService.shutdown();
// 定义一个实现Runnable接口的类
class MyRunnable implements Runnable {
private List<String> list;
public MyRunnable(List<String> list) {
this.list = list;
}
@Override
public void run() {
// 处理list里面的数据
}
}
原文地址: http://www.cveoy.top/t/topic/bVTT 著作权归作者所有。请勿转载和采集!