为什么需要ReaderLock?

时间:2011-03-06 05:31:20

标签: java locking

既然读者没有改变任何东西,为什么我们需要ReaderLock?

3 个答案:

答案 0 :(得分:3)

标准Java SE类库中没有ReaderLock这样的类。

如果你一般都在询问“读锁定”,那么我们的想法就是在我们阅读它时停止获取写锁定并写入文件(或其他任何内容)。

答案 1 :(得分:3)

对于一个你不想在读者正在阅读时写作的人,因为否则你可能正在阅读有损坏的(例如半写)值。 (之前由其他人提到过)

并发编程中另一个重要的事情是可见性。如果您不读取锁定,则VM可能会缓存旧值,您将看不到新值。有时甚至重新排序也是一个问题。

关于这个主题(以及许多其他主题)的一本非常好的书是Java Concurrency in PracticeSynchronization and the Java Memory Model的免费在线文章Doug Lea也涵盖了它,可能是一个良好的开端。

答案 2 :(得分:1)

我认为你在问同步问题。如果是这样,你需要在读者使用共享缓冲区之前锁定。如果不是在读取写入线程时,可以写入共享缓冲区,并且可以读取错误的数据。我不确定你是否在问这个,因为你的问题不明确。