我正在研究Java并发API,并试图了解读写锁的有用性。 Javadoc说一个读写块维护一对锁,一个锁用于读取,另一个锁用于写入操作。虽然写锁是线程的互斥访问,但多个线程可以获取读锁。因此,如果在读取部分中我们所要做的只是读取操作,并且无论如何我们都在提供多个线程访问权限,那么首先需要具有读取锁的条件是什么?是否存在读写锁实际上有用的情况?

最佳答案



在阅读时,您需要防止写者获得锁...,直到所有读者都读完为止。但是其他读取器也可以获取该锁。

在编写过程中,您需要防止读者获取该锁...,直到该作者完成为止。

(换句话说,可以有一个作家,或者有多个读者拿着锁……但不能同时有两个。)

出于描述目的,将行为描述为两个锁是有帮助的。实际发生的事情……是特定于实现的。



好吧在可以区分需要共享只读访问权限的线程和需要独占读写(或只写)的线程的任何情况下,与简单的ReadWrite或原始互斥锁相比,Lock锁可以提供更多的并发性。

关于java - 有关读写锁的查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18182003/

10-09 08:00