linapex的gravatar头像
linapex2014-01-23 14:43:55

2000万开房数据java多线程写入同一文件

这几天,出现了 2000万开房数据的事情。

 

好奇心使然,找到种子下载了,发现格式是 csv的。

 

一个文件好几百兆,大概200万行左右的数据,现在我要解决的问题是,将 csv的数据读出来,组合数据,生成sql文件。

 

一个技术难点是:多线程写入同一文件,只能有一个线程写,其他线程在等待.网上有很多解决方法,但我自己实现了代码,代码中有做一个 文件内容输出优化,缓存的功能,。

 

以前单线程跑,跑了一下午才完成,大概跑了几个小时。多线程跑,大概4-5分钟左右。

 

这个场景在平常开发中也是经常要用到的。

先说明,此代码直接用会报错,因为要用到我自己的工具类,需要手动将 FileUtils.doWriteFile 这些代码 换成 System.out 输出即可。

以下是截图:

 2000万开房数据java多线程写入同一文件


最代码官方编辑于2014-1-23 14:53:26


打赏

文件名:code.rar,文件大小:11.219K下载
  • /
    • /code.doc
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友