JUC-ReentrantReadWriteLock


可重入读写锁

内部有

  • 1个读锁
  • 1个写锁
  • 1个sync

Sync

属性:

  • transient ThreadLocalHoldCounter readHolds;
  • Thread firstReader
  • HoldCounter cachedHoldCounter;
  • int firstReaderHoldCount;

内部类:

画板

HoldCounter

保存线程id和应用次数�

ThreadLocalHoldCounter

继承自ThreadLocal,用于记录HoldCounter

用来记录各个线程获得读锁的次数,有threadLocal的方式去保存

NonfairSync

FairSync

ReadLock

支持重入的共享锁

WriteLock

支持重入的排他锁�

锁升降级问题

没有锁升级

为了保证数据可见性。因此不允许获得读锁后,在获得写锁

有锁降级

先获取写锁,在获取读锁,

参考文档:

1、https://www.cnblogs.com/monco-sxy/p/13258508.html


文章作者: 王利康
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 王利康 !
  目录