我的多线程————读取百万条Excel数据,写入到数据库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的多线程————读取百万条Excel数据,写入到数据库相关的知识,希望对你有一定的参考价值。
问题:如何高效的读取百万条Excel数据到数据库?
问题拆解:1.如何读取百万条Excel数据?poi用户模式会出现内存溢出啊
2.读取到的Excel数据存储在哪里?100万条数据放在内存不是一件很恐怖的事情吗?
3.如何高效的将数据写入到数据库?多线程如何使用?
方案1:poi的命令触发模式解决读取的时候内存溢出问题、读取到的数据放到内存中、内存中通过forkjoin工具任务拆解,加入到队列
深入思考:1》每次都要等待读取完数据,才能进行其他操作,读取本身就花费了9秒时间 2》100万条数据很消耗内存啊
方案2:分2个线程:线程A和线程B,线程A负责读取Excel数据,线程B负责写入到数据库,线程A和线程B如何配合工作呢?多线程的生产消费者模式
最终核心代码附上:
poi工具类代码:
读请求使用的是poi的命令模式,读取只负责向list中添加数据,无上限
生产消费模式的核心代码
使用线程的工厂模式,将写请求加入到队列
队列中,不断拿取写请求,执行
写请求最终的执行方法
温馨提示:数据库的操作可以使用批处理
以上是关于我的多线程————读取百万条Excel数据,写入到数据库的主要内容,如果未能解决你的问题,请参考以下文章