有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

多线程在java同步中读锁的目的是什么

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


共 (1) 个答案

  1. # 1 楼答案

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

    Java 11 docs

    The read lock may be held simultaneously by multiple reader threads, so long as there are no writers. The write lock is exclusive.