最近在实现一个导入功能,数据量在5w左右,后续会持续增长,使用的是easyExcel,读取文件性能较好,但因为每条数据都要做复杂的数据校验,导致整体响应时间在三四十分钟,虽然说导入不是直接和用户交互,但现在数据量不算很大的情况下,这个响应时间还是需要优化的,读取文件速度在几秒以内,主要是在数据校验这块,所以就使用了多线程去工作。
主要代码:
思路: 1:先计算出查询总量,根据服务器的cpu核数,求每个线程应处理的条数 2.使用Callable返回结果,然后聚合数据,最后处理。
这里有个问题就是线程池合理的线程数你是如何考虑的?这也是之前面试遇到的一个题:
1.先看下机器的CPU核数,然后在设定具体参数:
System.out.println(Runtime.getRuntime().availableProcessors());
即CPU核数 = Runtime.getRuntime().availableProcessors()
2.分析下线程池处理的程序是CPU密集型,还是IO密集型
CPU密集型:核心线程数 = CPU核数 + 1
IO密集型:核心线程数 = CPU核数 * 2
注:IO密集型(某大厂实践经验)
以上就是本篇文章【多线程处理大数据量查询】的全部内容了,欢迎阅览 ! 文章地址:http://dh99988.xhstdz.com/quote/62787.html
栏目首页
相关文章
动态
同类文章
热门文章
网站地图
返回首页 物流园资讯移动站 http://dh99988.xhstdz.com/mobile/ , 查看更多