我正在研究 java 并发 API 并试图了解读写锁的用处。 javadoc 说 readwrite block 维护一对锁,一个用于读操作,另一个用于写操作。虽然写锁是一个线程独占访问,但多个线程可以获得读锁。因此,如果在读取部分我们所做的只是读取操作,并且无论如何我们都提供多线程访问,那么首先需要读取锁是什么?有读写锁真正有用的场景吗?
最佳答案
.... what is the need to have the readlock in the first place
在读取时,您需要阻止写入者获取锁……直到所有读取器都完成为止。但是另一个读者获取锁是可以的。
在写入时,您需要阻止读取器获取锁……直到写入器完成。
(换句话说,可以有一个作者,或多个持有锁的读者......但不能同时存在。)
为了描述这一点,将行为描述为两把锁是有帮助的。 实际上在幕后发生了什么……是特定于实现的。
Is there a scenario when the readwrite lock is actually useful?
嗯,是的。在您可以区分需要共享只读访问的线程和需要独占读写(或只写)的线程的任何场景中,ReadWrite
锁比简单的 锁允许更多的并发性锁
或原始互斥体。
关于java - 关于读写锁的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18182003/