0

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

4

3 回答 3

1

正如 Erik 所说,必须有一个同步机制。否则,这将成为 Readers/Writers 问题。

如果您可能想加快速度,您可以同时进行多次读取,并且每当您需要写入时,停止新的读取请求,让现有请求完成,获取锁,写入文件,释放锁。

ReentrantReadWriteLock可能会对您有所帮助。

于 2013-03-11T13:56:42.220 回答
1

随机存取文件的行为方式与随机存取存储器相同——它对各种数据竞争开放。因此,只要您不确定不同的线程在文件的不同区域工作,您绝对必须使用同步。

于 2013-03-11T13:58:25.863 回答
0

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

于 2013-03-11T13:52:55.317 回答