美文网首页
34 读写锁 ReentrantReadWriteLock

34 读写锁 ReentrantReadWriteLock

作者: 小周爱吃瓜 | 来源:发表于2022-04-18 23:27 被阅读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中同步状态表示一个锁被一个线程重复获取的次数,而读写锁的自定义同步器需要在同步状态(一个整型变量)上维护多个读线程和一个写线程的状态

相关文章

网友评论

      本文标题:34 读写锁 ReentrantReadWriteLock

      本文链接:https://www.haomeiwen.com/subject/jcmjertx.html