多线程在java同步中读锁的目的是什么 2 月,3 周 Questions & Answers 413 我是多线程新手,我很困惑,为什么java同步需要读锁。我也理解写锁的用例。在这种情况下,我们需要限制线程的读卡器访问。 假设java中没有读锁,那么问题是什么
# 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.
# 1 楼答案
假设存在共享资源R。一个线程T1正在读取它,但它没有被锁定,因为java中没有读取锁(如您所说),同时另一个线程尝试访问R1以对其进行写入。由于R1上没有附加线程当前正在读取的信息,所以第二个线程将获得写锁并开始向其写入,这是意外的。读锁是附加在资源上的额外信息,它告诉后面的线程资源已经处于读访问、等待写访问或只能读访问状态。 读锁可以由多个线程访问
从Java 11 docs