java使用多线程导出excel「建议收藏」

java使用多线程导出excel「建议收藏」前言在一个业务中,需要将数据库的一张日志表导出到excel中做统计分析归类,由于单表的数据量特别大,发现在最终导出excel的时候,由于数量太大,导出速度特别慢,想了一些办法,不管使用何种API,单线程始终是操作的瓶颈,因此最终考虑使用多线程进行改善总体思路:1、数据总量分段2、每个线程处理不同分段的数据3、提交线程池下面来看具体的代码,为测试方便,这里直接使用一个测试接口进行调用,…

大家好,又见面了,我是你们的朋友全栈君。

前言

在一个业务中,需要将数据库的一张日志表导出到excel中做统计分析归类,由于单表的数据量特别大,发现在最终导出excel的时候,由于数量太大,导出速度特别慢,想了一些办法,不管使用何种API,单线程始终是操作的瓶颈,因此最终考虑使用多线程进行改善

总体思路:

1、数据总量分段
2、每个线程处理不同分段的数据
3、提交线程池

下面来看具体的代码,为测试方便,这里直接使用一个测试接口进行调用,

1、控制器

/**
     * 导出系统日志信息-V2测试
     *
     * @return
     */
    @GetMapping("/log-export/v2")
    @ApiOperation(value = "导出系统日志信息V2", notes = "导出系统日志信息V2", produces = "application/json")
    public void exportSysLogV2(@RequestParam(name = "userName", required = false) String userName,
                             @RequestParam(name = "startDate", required = false) String startDate,
                             @RequestParam(name = "endDate", required = false) String
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137894.html原文链接:https://javaforall.net

赞 (4)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 18 games for android,Kids games for toddlers「建议收藏」

    18 games for android,Kids games for toddlers「建议收藏」Kidsgamesfortoddlers介绍Kidsgamesfortoddlers-Educationalgamefor2–4yearsoldtoddlersandkids-Sortandclassifyobjectsbyshape,size,colorandquantity-Developedinclosecooperation…

    2022年10月22日
  • mybatis看这一篇就够了,简单全面一发入魂

    mybatis看这一篇就够了,简单全面一发入魂文章目录Mybatis概述快速入门原生开发示例基于Mapper代理的示例基于注解的示例应用场景主键返回批量查询动态SQL缓存关联查询延迟加载逆向工程PageHelper分页插件MybatisPlusMybatis概述mybatis是什么?有什么特点?它是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,但它的数据库无关性较低什么是ORM?ObjectRelationMapping,对象关系映射。对象指的是Java

    2022年7月14日
  • 矩阵的计算[通俗易懂]

    矩阵的计算[通俗易懂]矩阵运算规则:矩阵与常量运算矩阵与向量运算矩阵与矩阵运算矩阵之间相乘,必须满足B矩阵列数等于A矩阵行数才能运算,矩阵与矩阵之间的计算可以拆分为矩阵与多个向量的计算再将结果组合,返回的结果为一个列数等于B矩阵、行数等于A矩阵的矩阵。矩阵加减矩阵加减必须满足矩阵之间纬度相同,返回的结果也会是一个相同纬度的矩阵。矩阵的乘法规律:不满足交换律,A×B≠B×A满足结合律,A×(B×C)=(A×B)×C满足分配率,A×(B+C)=A×B.

    2022年4月19日
  • 数据库 分区表详解

    数据库 分区表详解如果你的数据库中某一个表中的数据满足以下几个条件,那么你就要考虑创建分区表了。1、数据库中某个表中的数据很多。很多是什么概念?一万条?两万条?还是十万条、一百万条?这个,我觉得是仁者见仁、智者见智的问题。当然数据表中的数据多到查询时明显感觉到数据很慢了,那么,你就可以考虑使用分区表了。如果非要我说一个数值的话,我认为是100万条。2、但是,数据多了并不是创建分区表的惟一条件,哪怕你有一千万条记录,但

    2022年6月6日
  • Linux安装vim编辑器_linux系统安装jdk教程

    Linux安装vim编辑器_linux系统安装jdk教程1、yum下载vimyum-yinstallvim*2、安装完之后开始配置vimvim/etc/vimrc3、打开文件后,添加如下代码setnu”设置显示行号setshowmode”设置在命令行界面最下面显示当前模式等setruler”在右下角显示光标所在的行数等信息setautoindent”设置每次单击Enter键后,光标移动到下一行时与上一行的起始字符对齐syntaxon”即设置语法检测,当编辑C或者Shell脚本时,

    2022年10月24日
  • ssdp java_SSDP协议 – 实施[通俗易懂]

    ssdp java_SSDP协议 – 实施[通俗易懂]我正在尝试实现SSDP协议,但我不确定它是如何工作的.SSDP通过udp发送数据,这很清楚.如果控制器连接到网络,它可以搜索具有MSEARCH消息的设备,该消息可以发送到多播地址239.255.255.250:1900.每个设备都必须收听此地址并做出响应.但我不知道他们是如何回应的.我在wireshark中看到他们用单播响应,但我不知道如何确定接收响应的端口.编辑–…

    2022年10月11日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号