ListstudentList = new linkedList<>(); studentList.add("A"); studentList.add("B"); studentList.add("C"); studentList.add("D"); studentList.add("E"); studentList.add("F"); studentList.add("G"); studentList.add("H"); studentList.add("I"); studentList.add("J"); studentList.add("K"); studentList.add("L"); studentList.add("M"); studentList.add("N"); studentList.add("O"); int nThreads = 3; int size = studentList.size(); ExecutorService executorService = Executors.newFixedThreadPool(nThreads); List > futures = new ArrayList >(nThreads); for (int i = 0; i < nThreads; i++) { final List groupList = studentList.subList(size / nThreads * i, size / nThreads * (i + 1)); Callable task1 = () -> { log.info("Print:"+JSONObject.toJSonString(groupList)); //do your work return 1; }; futures.add(executorService.submit(task1)); } executorService.shutdown(); if (!futures.isEmpty() && futures != null) { log.info("I AM COPY OVER"); }
参考:【java】多线程批量拆分List导入数据库_哈士奇-CSDN博客_多线程批量导入数据库



