CyclicBarrier多线程导出Excel

为了解决大量数据导出Excel时速度慢的问题,文章介绍了使用CyclicBarrier和线程池的解决方案。通过CyclicBarrier协调多个线程,每个线程负责一个sheet页的数据写入,待所有线程完成后再统一进行Excel导出,从而显著提升了导出效率,实现了从十几分钟到秒级别的优化。
摘要由CSDN通过智能技术生成

项目场景:

导出用户推广数据Excel文件,大概有百万数据,普通导出需要十几分钟,速度太慢,甲方要求优化。经优化,已达到秒级别。

原因分析:

主要是Excel数据量大,写入太慢。Excel有多个sheet页,一个部门一个sheet,每个sheet页数据条数不统一,采用普通Excel导出,一个sheet页写完再写下一个sheet页,速度太慢。

解决方案:CyclicBarrier+线程池

CyclicBarrier可实现一组线程相互等待,当所有线程都到达某个屏障点后再进行后续操作。
CyclicBarrier类的内部有一个计数器count,每个线程在到达屏障点的时候都会调用await方法将自己阻塞,count减1,当count=0的时候所有被阻塞的线程都被唤醒。
主要方法await,此方法有两个重载方法:
await(),是所有线程到达屏障点后进行后续操作;
await(long timeout, TimeUnit unit),让线程等待一段时间,如果还有线程未到屏障点,则到达屏障点的线程进行后续操作。
在这里插入图片描述在这里插入图片描述await方法内部实现代

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值