多线程读写文件

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

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

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

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

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

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

  • 加锁,应该是对关键的读写过程加锁,对其它业务代码不包含。并且如果都是读过程,那么不加锁
  • 短时间打开多个文件对象,会造成严重的资源消耗,最终卡顿。解决办法是:
    • 为了可用性,控制打开的文件的个数,以及频率
    • 及时调用close关闭文件对象
    • 还可以对文件对象复用,但需要注意其指针位置
    • 除了直接的文件对象,与之相关的字符串和对象也要注意及时赋值为None销毁,或者考虑复用。java中可以考虑stringbuffer或stringbuilder动态str类型
posted @ 2023-04-28 14:02  挖洞404  阅读(369)  评论(0编辑  收藏  举报