【发布时间】:2013-03-11 13:45:57
【问题描述】:
有没有一种方法可以允许多个线程同时对RandomAccessFile 执行读/写操作,即并发?我必须使用任何同步对象,还是可以不使用任何同步来完成?
【问题讨论】:
-
查看stackoverflow.com/questions/464784/… 最好的办法是使用sqlite.org 或其他数据库。
标签: java multithreading randomaccessfile
有没有一种方法可以允许多个线程同时对RandomAccessFile 执行读/写操作,即并发?我必须使用任何同步对象,还是可以不使用任何同步来完成?
【问题讨论】:
标签: java multithreading randomaccessfile
正如 Erik 所说,必须有一个同步机制。否则,这将成为 Readers/Writers 问题。
如果您想加快速度,您可以同时进行多次读取,并且每当您需要写入时,停止新的读取请求,让现有请求完成,获取锁,写入文件,释放锁。
ReentrantReadWriteLock 可能会对您有所帮助。
【讨论】:
随机存取文件的行为方式与随机存取存储器相同 - 它对各种数据竞争开放。因此,只要您不确定不同的线程在文件的不同区域工作,您绝对必须使用同步。
【讨论】:
您必须使用某种同步方法。文件中只能有一个文件位置。 如果您尝试在没有同步的情况下进行并发访问,则行为充其量是不可预测的。
【讨论】: