34 读写锁 ReentrantReadWriteLock

2022-04-18  本文已影响0人  小周爱吃瓜
  1. 公平性
  2. 可重入
    3 锁降级,先获取写锁,再获取读锁最后释放写锁,写锁能够降级称为读锁。

如何维护:
state 高低位,S&0x0000FFFF
读状态:低位:


Screen Shot 2022-04-18 at 11.22.52 PM.png

另外还有基数词,读锁用的就是一个共享锁。
获取到了共享锁,则计数器+1,释放共享锁,则计数器-1.

Screen Shot 2022-04-18 at 11.24.08 PM.png

ReentrantReadWriteLock与ReentrantLock一样,其锁主体依然是Sync,它的读锁、写锁都是依靠自定义同步器Sync来实现的。所以ReentrantReadWriteLock实际上只有一个锁,只是在获取读取锁和写入锁的方式上不一样而已,它的读写锁其实就是两个类:ReadLock、writeLock,这两个类都是lock实现。读写状态就是其同步器的同步状态,在ReentrantLock中同步状态表示一个锁被一个线程重复获取的次数,而读写锁的自定义同步器需要在同步状态(一个整型变量)上维护多个读线程和一个写线程的状态

上一篇 下一篇

猜你喜欢

热点阅读