利用线程池来处理Excel导出功能
首先,需求是:导入一份Excel数据,和数据库里面进行对比,若发现不一致的数据,则全部整成一份Excel导出来!
然而:
由于数据量比较大,读写速度等原因,会造成接口请求超时!
那么:
我给出的解决方案就是开启多线程处理数据写入Excel中
直接上代码:
/*** 初始化线程池* TODO (建议线程数 = 2 * CPU最大处理器数)*/private static ExecutorService executor = ThreadUtil.newExecutor(2 * Runtime.getRuntime().availableProcessors());
// 两个数据进行对比, 找出不一致的数据List (以Excel数据为准)List<SubscriptionExcelDTO> compareList = this.compare(subscriptionExcelEntities, subscriptionList);// 为了异步处理List<Future<Boolean>> futures = new ArrayList<>(compareList.size());for (SubscriptionExcelDTO excelDTO : compareList) {Future<Boolean> submit = executor.submit(() -> {if ("韶关保利时光印象-一期-4栋-1-2604".equals(excelDTO.getRoomName())) {// 模拟异常, 不影响其他的数据的处理int test = 1/0;}log.info(">>> " + excelDTO.getRoomName());// 执行业务逻辑this.writerRowIng(excelDTO, writer);return Boolean.TRUE;});futures.add(submit);}// 取数据for(Future submit : futures) {// 保证每个数据都取出来,且正确submit.get();}log.info("------------------>> 主线程等待完毕");
可能数据量贼大贼大,可能还是会超时的话,可以考虑再加入RabbitMQ异步处理
当然这只是我使用的一种解决方案而已,还是很多种方案的,
大家可以在下面给出自己的方案,楼主也想多向大家学习的!
利用线程池来处理Excel导出功能相关推荐
- 基于easyexcel的MySQL百万级别数据的excel导出功能
前言 最近我做过一个MySQL百万级别数据的excel导出功能,已经正常上线使用了. 这个功能挺有意思的,里面需要注意的细节还真不少,现在拿出来跟大家分享一下,希望对你会有所帮助. 原始需求:用户在U ...
- 根据children动态复杂表头excel导出_Java高级特性-注解:注解实现Excel导出功能
注解是 Java 的一个高级特性,Spring 更是以注解为基础,发展出一套"注解驱动编程". 这听起来高大上,但毕竟是框架的事,我们也能用好注解吗? 的确,我们很少有机会自己写注 ...
- java数据导出ex_Java高级特性注解:注解实现Excel导出功能
作者:JerryWu来源:SegmentFault 思否社区 注解是 Java 的一个高级特性,Spring 更是以注解为基础,发展出一套"注解驱动编程". 这听起来高大上,但毕竟 ...
- ThreadPool的线程开启、线程等待、线程池的设置、定时功能
一. ThreadPool简介 ThreadPool简介:ThreadPool是一个线程池,当你需要开启n个线程时候,只需把这个指令抛给线程池,它将自动分配线程进行处理,它诞生于.Net 2.0时代. ...
- 如何在 Asp.Net Core 实现 Excel 导出功能
在web应用程序开发时,或许你会遇到这样的需求,如何在 Asp.Net Core 中实现 excel 或者 word 的导入导出,在 NuGet 上有大量的工具包可以实现这样的功能,本篇就讨论下如何使 ...
- Angular导出功能(excel导出功能、文件数据流导出功能、图片的下载导出功能)
Angular导出功能(excel导出功能.文件数据流导出功能.图片的下载导出功能) 场景1:(直接返回网络地址进行导出的excel) 后台返回的是 : "http://192.168.0. ...
- python爬虫利用线程池下载视频
由于requests模块中,requests.get()是线程阻塞的,所有当有多个爬虫进行爬取时,那么单线程式爬虫是耗时比较长的,所以我们需要使用线程池,利用线程池来爬取耗时比较长的资源,这里我们使用 ...
- java Excel导出功能之 不固定列表格
背景:考勤周期为本月19号至上月20号,则每个月考勤周期表的列是动态变化的.所有数据显示和excel导出功能都需要动态的进行处理. 显示格式如下图 前端 checkin.jsp<%@ page ...
- Excel导出功能超时解决方案 -- 异步处理
Excel导出功能超时解决方案 -- 异步处理 参考文章: (1)Excel导出功能超时解决方案 -- 异步处理 (2)https://www.cnblogs.com/nightOfStreet/p/ ...
最新文章
- 这款耳机堪比千元级的AirPods
- 我的世界服务器开启就停止运行,我的世界怎么停止时间
- CST时间转换成 yyyy-MM-dd格式
- JAVA数组子集_【Java虚拟机】JVM系列学习之JVM体系(一)
- 简单叙述tcp/ip的工作原理和主要的协议_802.11协议精读3:CSMA/CD与CSMA/CA
- JAVA项目一 家庭收支记账软件
- 页面加载出现白页是什么原因造成的
- Windows超级管理器
- jdk1.8换成11,启动项目报错java.net.MalformedURLException: unknown protocol: jrt
- 常用数据库排名及分类介绍
- [转载] 网友曝光:东方标准赴日培训90%可出国属欺诈
- Zeev Suraski、Andi Gutmans、Rasmus Lerdorf
- JavaBeans技术的应用
- 包教包会—全网最易懂的全加器高位进位和低位进位讲解
- UVA 11426 GCD - Extreme (II) (欧拉函数)
- 深圳行-八:惠州泡温泉
- Maekdown使用
- 常用的时间系统有哪些?
- android 线性布局总结
- MATLAB轻松绘制地图路线——已知及未知坐标下的处理方法(2)