java同步中读锁的目的是什么

java同步中读锁的目的是什么,java,multithreading,concurrency,Java,Multithreading,Concurrency,我是多线程新手,我很困惑,为什么java同步中需要读锁。我也理解写锁的用例。在哪种情况下,我们需要限制线程的读取器访问。 假设java中没有读锁,那么问题出在哪里。假设有共享资源R。一个线程T1正在读取它,但它没有被锁定,因为java中没有读锁(如您所说),同时另一个线程尝试访问R1在其上写。由于R1上没有附加线程当前正在读取的信息,所以第二个线程将获得写锁并开始向其写入,这是意外的。读锁是附加到资源的额外信息,它告诉后面的线程资源已经处于读访问、等待写访问或只能读访问状态。 读锁可以由多个线程

我是多线程新手,我很困惑,为什么java同步中需要读锁。我也理解写锁的用例。在哪种情况下,我们需要限制线程的读取器访问。
假设java中没有读锁,那么问题出在哪里。

假设有共享资源R。一个线程T1正在读取它,但它没有被锁定,因为java中没有读锁(如您所说),同时另一个线程尝试访问R1在其上写。由于R1上没有附加线程当前正在读取的信息,所以第二个线程将获得写锁并开始向其写入,这是意外的。读锁是附加到资源的额外信息,它告诉后面的线程资源已经处于读访问、等待写访问或只能读访问状态。 读锁可以由多个线程访问

读锁可由多个读卡器线程同时持有, 只要没有作家。写锁是独占的


如果你取出一个读锁,你就可以防止另一个线程取出一个写锁,并在你读取时改变内容。我发现,也许这会有帮助。那么,如果只有一个锁可以同时工作,读写锁的好处是什么。多个读卡器不会相互阻塞你熟悉吗?