码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Excel多线程导入数据库


    文章目录

    • Excel多线程导入数据库
      • 1. CountDownLatch
      • 2.多线程导入数据库

    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);
    
    • 1
    • 2

    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; // 将循环变量赋值给新变量 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;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    测试只需要在测试类中注入service调用方法即可
    测试结果 这个结果包括从read读数据所以相对而言可能慢一点
    在这里插入图片描述

  • 相关阅读:
    UE4(unreal Engine)中使用蓝图类Actor创建开关门,并使用鼠标和键盘控制开关门
    验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)
    Win10系统C++调用OpenCV实现网络摄像头录像和抓拍图片
    ElementUI浅尝辄止37:Select 选择器
    Jenkins教程-5-gitee自动化测试任务构建
    Linux和树莓派基础交互
    使用pdf.js实现pdf的预览与打印
    基于机器学习的课堂自动点名系统
    零数科技向海南省委书记汇报数字金融创新
    第7章 课程总结
  • 原文地址:https://blog.csdn.net/weixin_63558979/article/details/133964405
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号