1845-2000萬開房數據java多線程寫入同一文件源碼 源代碼
這幾天,出現了 2000萬開房數據的事情。
好奇心使然,找到種子下載了,發現格式是 csv的。
一個文件好幾百兆,大概200萬行左右的數據,現在我要解決的問題是,將 csv的數據讀出來,組合數據,生成sql文件。
一個技術難點是:多線程寫入同一文件,只能有一個線程寫,其他線程在等待.網上有很多解決方法,但我自己實現了代碼,代碼中有做一個 文件內容輸出優化,緩存的功能,。
以前單線程跑,跑了一下午才完成,大概跑了幾個小時。多線程跑,大概4-5分鐘左右。
這個場景在平常開發中也是經常要用到的。
先說明,此代碼直接用會報錯,因為要用到我自己的工具類,需要手動將 FileUtils.doWriteFile 這些代碼 換成 System.out 輸出即可

本源碼地址:http://www.jsxyx.com.cn/vip/java/2020/0219/20430.html