大家好,这里是淇妙小屋,一个分享技术,分享生活的博主 以下是我的主页,各个主页同步更新优质博客,创作不易, 后续会发布更多MySQL,Redis,并发,JVM,分布式等面试热点知识,以及Java学习路线,面试重点,职业规划,面经等相关博客 转载请标明出处!
方法 | 描述 |
---|---|
int getReadLockCount() | 获取读锁被获取的次数(同步状态state进行位运算得到) |
int getWriteHoldCount() | 返回当前线程获取写锁的次数(exclusiveOwnerThread指向的线程是获得写锁的线程,state进行位运算得到) |
int getReadHoldCount() | 返回当前线程获取读锁的次数,Sync内部有个ThreadLocalHoldCount(继承自ThreadLocal)保存有每个线程获取读锁的次数 |
AQS通过 同步状态state来表示锁(0—锁可用,非0—锁不可用,可重入锁每重入一次state+1)
但在ReentrantReadWriteLock中ReadLock与WriteLock共用一个state,所以就不是这样简单的机制了
32位的state在ReentrantReadWriteLock中被划分为了两部分(16+16)
获得读锁,高16位+1(读锁状态——state>>16,读状态不为0——读锁已被获取)
获得写锁,低16位+1(写锁状态——state&&0x0000FFFF,写状态不为0——写锁已被获取)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有