ReentrantReadWriteLock:ReadLock和WriteLock有什么区别?readLock.lock();writeLock.lock();
2022-08-31 17:06:16
结合这些,您可以一次只安排一个线程具有写入访问权限,但除了线程正在写入时,您可以同时读取任意数量的读者。
换句话说。每次要从结构中读取时,请进行读取锁定。每次你想写,拿一个写锁。这样,每当写作发生时,没有人在阅读(你可以想象你有独家访问权限),但只要没有人在写作,就可能有很多读者同时阅读。
ReadWriteLock
的文档清楚地说明了这一点:
读写锁维护一对关联的锁,一个用于只读操作,一个用于写入。读锁定可以由多个读取器线程同时持有,只要没有写入器即可。写锁定是独占的。
因此,您可以一次拥有许多读者,但只有一个作者 - 并且作者也会阻止读者阅读。如果你有一些资源可以安全地从多个线程读取,并且读取比写入更常见,但是当资源实际上不是只读时,这很有用。(如果没有作家并且阅读是安全的,那么根本不需要锁。