如何允许多个线程在Java中同时访问随机访问文件

时间:2013-03-11 13:45:57

标签: java multithreading randomaccessfile

有没有办法允许多个线程同时对RandomAccessFile执行读/写操作,即同时执行?我是否必须使用任何同步对象,还是可以在不使用任何同步的情况下完成?

3 个答案:

答案 0 :(得分:1)

正如Erik所说,必须有一个同步机制。否则这将成为读者/作家的问题。

如果您想要加速,可以一起进行多次读取,无论何时需要写入,都要停止新的读取请求,让现有请求完成,获取锁定,写入文件,释放锁定。< / p>

ReentrantReadWriteLock可能会对您有所帮助。

答案 1 :(得分:1)

随机访问文件的行为与随机存取内存相同 - 它适用于各种数据竞争。因此,只要你没有证明不同的线程在文件的不同区域工作,你绝对必须使用同步。

答案 2 :(得分:0)

您必须使用某种同步方法。文件中只能有一个文件位置。 如果您在没有同步的情况下尝试并发访问,则该行为最多是不可预测的。