public static void main(String[] args) {
Long time = System.currentTimeMillis();
System.out.println("开始执行");
List<String> list = new ArrayList<>();
for (int i = 0; i < 800; i++) {
list.add(i+"");
}
// 对集合进行foreach遍历
list.forEach(s -> {
System.out.println(s);
});
// 1.多线程执行集合保存
int nThreads = 50;
int size = list.size();
// 创建多线程
ExecutorService executorService = Executors.newFixedThreadPool(nThreads);
List<Future<Integer>> futures = new ArrayList<Future<Integer>>(nThreads);
for (int i = 0; i < nThreads; i++) {
// 对集合进行拆解
final List<String> EnrollStudentEntityImputList = list.subList(size / nThreads * i, size / nThreads * (i + 1));
Callable<Integer> task1 = () -> {
//TODO:用线程睡眠模拟对集合进行保存操作
Thread.sleep(300);
//studentSave.saveStudent(EnrollStudentEntityImputList);
return 1;
};
futures.add(executorService.submit(task1));
}
executorService.shutdown();
if (!futures.isEmpty() && futures != null) {
System.out.println("执行批量保存成功");
}
// 2.for进行保存,800条数据用时4分钟左右
for (int i = 0; i <list.size() ; i++) {
Thread.sleep(300);
}
Long userTime = System.currentTimeMillis()-time;
System.out.println("执行结束,用时"+userTime);
}
多线程执行List导入Mysql数据库方法
最新推荐文章于 2024-07-03 03:04:11 发布
本文探讨了一种使用Java实现的多线程批量处理数据的方法,通过创建固定大小的线程池,将任务拆解并分配给各个线程执行。对比了单线程逐条处理与多线程并行处理的效率,展示了多线程在处理大量数据时的优势。同时,代码中使用了线程睡眠来模拟实际的数据保存操作,并在执行结束后输出了总耗时,为性能调优提供了参考。
摘要由CSDN通过智能技术生成