java – ReentrantReadWriteLock:ReadLock和WriteLock之间有什么区别?

我所知道的是:

> ReadLockWriteLock以某种方式相互影响
> WriteLock就像是同步的
> ReadLock似乎不能单独工作

解决方法:

readLock.lock();

>这意味着如果任何其他线程正在写(即持有一个
写锁定然后停在这里,直到没有其他线程正在写.
>一旦授予锁定,就不允许其他线程写入
(即采取写锁定)直到锁定被释放.

writeLock.lock();

>这意味着如果任何其他线程正在读取或写入,请停止
在这里,等到没有其他线程在读或写.
>一旦授予锁定,就不允许其他线程读取
或写入(即读取或写入锁定)直到锁定被释放.

结合这些,您可以一次只安排一个线程进行写访问,但是除了线程写入之外,您可以同时读取多个读取器.

换一种方式.每次要从结构中读取时,请执行读锁定.每次要写入时,都要进行写锁定.这样一旦写入发生,没有人正在阅读(你可以想象你有独家访问权限),但只要没有人在写,就会有许多读者同时阅读.

上一篇:linux – 如何在使用锁文件时避免竞争条件以避免脚本的两个实例同时运行?


下一篇:linux的文件锁