1. 程式人生 > >我的多線程————讀取百萬條Excel數據,寫入到數據庫

我的多線程————讀取百萬條Excel數據,寫入到數據庫

多線程 讀取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數據,寫入到數據庫