既然读者没有改变任何东西,为什么我们需要ReaderLock?
答案 0 :(得分:3)
标准Java SE类库中没有ReaderLock
这样的类。
如果你一般都在询问“读锁定”,那么我们的想法就是在我们阅读它时停止获取写锁定并写入文件(或其他任何内容)。
答案 1 :(得分:3)
对于一个你不想在读者正在阅读时写作的人,因为否则你可能正在阅读有损坏的(例如半写)值。 (之前由其他人提到过)
并发编程中另一个重要的事情是可见性。如果您不读取锁定,则VM可能会缓存旧值,您将看不到新值。有时甚至重新排序也是一个问题。
关于这个主题(以及许多其他主题)的一本非常好的书是Java Concurrency in Practice。 Synchronization and the Java Memory Model的免费在线文章Doug Lea也涵盖了它,可能是一个良好的开端。
答案 2 :(得分:1)
我认为你在问同步问题。如果是这样,你需要在读者使用共享缓冲区之前锁定。如果不是在读取写入线程时,可以写入共享缓冲区,并且可以读取错误的数据。我不确定你是否在问这个,因为你的问题不明确。