我所知道的是:


ReadLockWriteLock相互影响
WriteLock就像同步
ReadLock似乎无法单独工作

最佳答案

readLock.lock();


这意味着,如果有其他线程正在写入(即,
写锁),然后在此处停止,直到没有其他线程在写。
授予锁定后,将不允许其他线程写入
(即使用写锁),直到释放该锁为止。




writeLock.lock();


这意味着如果有任何其他线程正在读取或写入,请停止
在这里,直到没有其他线程正在读取或写入。
授予锁定后,将不允许其他线程读取
或写入(即获取读或写锁),直到释放该锁为止。




结合使用这些功能,您一次只能安排一个线程具有写访问权限,但是,除了一个线程正在写入时,您可以同时阅读任意数量的读取器。

换一种方式。每次您想从结构中读取时,都需要一个读取锁。每次要写时,都要写一个锁。这样一来,只要发生写操作,就不会有人在阅读(您可以想象您具有独占访问权),但是只要没有人在写,就会有许多读者同时阅读。

08-05 20:09