Excel多线程导入数据库

文章目录

Excel多线程导入数据库

书接上文 Excel20w数据5s导入

1. CountDownLatch

CountDownLatch 维护了一个计数器,初始值为指定的数量。当一个或多个线程调用 await() 方法时,它们会被阻塞,直到计数器的值变为 0。而其他线程可以通过调用 countDown() 方法来减小计数器的值,当计数器的值变为 0 时,所有处于等待状态的线程都会被唤醒。

需要注意的是,CountDownLatch 是一次性的,即计数器的值减为 0 后就不能再重置成其他值。

2.多线程导入数据库

dao

java 复制代码
    @Insert("insert into excel(id,name,age) values (#{id},#{name},#{age})")
    void insert(Man man);

service

java 复制代码
 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; // 将循环变量赋值给新变量 start
                final int end = i + batch - 1; // 计算结束位置
                executor.submit(() -> {
                    List<Man> 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读数据所以相对而言可能慢一点

相关推荐
Python之栈几秒前
【无标题】
数据库·python·mysql
风_流沙13 分钟前
java 对ElasticSearch数据库操作封装工具类(对你是否适用嘞)
java·数据库·elasticsearch
亽仒凣凣20 分钟前
Windows安装Redis图文教程
数据库·windows·redis
亦世凡华、29 分钟前
MySQL--》如何在MySQL中打造高效优化索引
数据库·经验分享·mysql·索引·性能分析
YashanDB31 分钟前
【YashanDB知识库】Mybatis-Plus调用YashanDB怎么设置分页
数据库·yashandb·崖山数据库
ProtonBase42 分钟前
如何从 0 到 1 ,打造全新一代分布式数据架构
java·网络·数据库·数据仓库·分布式·云原生·架构
PieroPc5 小时前
Python 写的 智慧记 进销存 辅助 程序 导入导出 excel 可打印
开发语言·python·excel
云和数据.ChenGuang6 小时前
Django 应用安装脚本 – 如何将应用添加到 INSTALLED_APPS 设置中 原创
数据库·django·sqlite
woshilys6 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
Hacker_LaoYi6 小时前
SQL注入的那些面试题总结
数据库·sql