外贸网站运营是做什么的,wordpress模板yunnut,河北网站建设哪家公司好,自己如何建设一个彩票网站文章目录 Excel多线程导入数据库1. CountDownLatch2.多线程导入数据库 Excel多线程导入数据库
书接上文 Excel20w数据5s导入
1. CountDownLatch
CountDownLatch 维护了一个计数器#xff0c;初始值为指定的数量。当一个或多个线程调用 await() 方法时#xff0c;它们会被阻… 文章目录 Excel多线程导入数据库1. CountDownLatch2.多线程导入数据库 Excel多线程导入数据库
书接上文 Excel20w数据5s导入
1. CountDownLatch
CountDownLatch 维护了一个计数器初始值为指定的数量。当一个或多个线程调用 await() 方法时它们会被阻塞直到计数器的值变为 0。而其他线程可以通过调用 countDown() 方法来减小计数器的值当计数器的值变为 0 时所有处于等待状态的线程都会被唤醒。 需要注意的是CountDownLatch 是一次性的即计数器的值减为 0 后就不能再重置成其他值。
2.多线程导入数据库
dao Insert(insert into excel(id,name,age) values (#{id},#{name},#{age}))void insert(Man man);service public String add5() {ExcelReader reader ExcelUtil.getReader(FileUtil.file(C:\\Users\\26896\\Desktop\\test.xlsx), sheet1);long startTime1 System.currentTimeMillis();try {CountDownLatch latch new CountDownLatch(200);int batch 1000;for (int i 1; i 200000; i batch) {final int start i; // 将循环变量赋值给新变量 startfinal int end i batch - 1; // 计算结束位置executor.submit(() - {ListMan read reader.read(0, start, end, Man.class);excelDao.add(read);latch.countDown();});}latch.await();long startTime System.currentTimeMillis();System.out.println(最终的结果为 (startTime - startTime1));} catch (Exception e) {e.printStackTrace();} finally {executor.shutdown();}return null;}测试只需要在测试类中注入service调用方法即可 测试结果 这个结果包括从read读数据所以相对而言可能慢一点