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读数据所以相对而言可能慢一点

相关推荐
llilian_167 小时前
IRIG-B码产生器立足用户痛点,提供精准授时解决方案
大数据·数据库·功能测试·单片机·嵌入式硬件·测试工具
zuoerjinshu13 小时前
sql实战解析-sum()over(partition by xx order by xx)
数据库·sql
NocoBase14 小时前
【2.0 教程】第 1 章:认识 NocoBase ,5 分钟跑起来
数据库·人工智能·开源·github·无代码
Hoshino.4115 小时前
基于Linux中的数据库操作——下载与安装(1)
linux·运维·数据库
Oueii17 小时前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
未来龙皇小蓝17 小时前
【MySQL-索引调优】11:Group by相关概念
数据库·mysql·性能优化
2401_8318249617 小时前
使用Fabric自动化你的部署流程
jvm·数据库·python
njidf18 小时前
Python日志记录(Logging)最佳实践
jvm·数据库·python
twc82918 小时前
大模型生成 QA Pairs 提升 RAG 应用测试效率的实践
服务器·数据库·人工智能·windows·rag·大模型测试
@我漫长的孤独流浪18 小时前
Python编程核心知识点速览
开发语言·数据库·python