多线程读写文件

参考:实践 1-2:多线程读写文件 - l.w.x - 博客园 (cnblogs.com)

得到的结论是,可以多线程读写,但是会有多种情况

  • 多线程同时读同一个文件,在这种情况下并不会造成冲突

  • 多线程同时写同一个文件,会造成写数据丢失

  • 多线程同时对同一个文件进行写和读,会造成脏读

解决办法是加锁,同时需要注意两方面:

  • 加锁,应该是对关键的读写过程加锁,对其它业务代码不包含。并且如果都是读过程,那么不加锁
  • 短时间打开多个文件对象,会造成严重的资源消耗,最终卡顿。解决办法是:
    • 为了可用性,控制打开的文件的个数,以及频率
    • 及时调用close关闭文件对象
    • 还可以对文件对象复用,但需要注意其指针位置
    • 除了直接的文件对象,与之相关的字符串和对象也要注意及时赋值为None销毁,或者考虑复用。java中可以考虑stringbuffer或stringbuilder动态str类型
posted @   挖洞404  阅读(394)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示