可以使用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里面的数据
  }
}
java ThreadPoolExecutor 创建5个线程池每个线程池平均分配list里面的数据list大小有400多条

原文地址: http://www.cveoy.top/t/topic/bVTT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录