读写锁ReentrantReadWriteLock

ReentrantReadWriteLock中èµæºç示æå¾

AQS实现的工具类,需要明白的就是AQS的state代表的是什么。ReentrantLockReadWriteLock中的state同时表示写锁和读锁的个数。为了实现这种功能,state的高16位表示读锁的个数,低16位表示写锁的个数。AQS有两种模式:共享模式和独占模式,读写锁的实现中,读锁使用共享模式;写锁使用独占模式;另外一点需要记住的即使,当有读锁时,写锁就不能获得;而当有写锁时,除了获得写锁的这个线程可以获得读锁外,其他线程不能获得读锁。

读锁,就是加锁的时候看头节点是不是读模式(共享模式),如果是且第一个阻塞的节点不是写模式,如果不是就直接修改state状态,表示加锁成功。如果第一个阻塞节点是写节点,也会接入阻塞加入CLH队列。这样可以防止写进程迟迟获取不到锁。

写锁,独占锁,只要不是自己获取了写锁都阻塞进入CLH队列。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值