| # ctrl + 点击ReentrantReadWriteLock |
| abstract static class Sync extends AbstractQueuedSynchronizer { |
| private static final long serialVersionUID = 6317671515068378041L; |
| |
| |
| |
| |
| |
| |
| |
| |
| static final int SHARED_SHIFT = 16; |
| static final int SHARED_UNIT = (1 << SHARED_SHIFT); |
| static final int MAX_COUNT = (1 << SHARED_SHIFT) - 1; |
| static final int EXCLUSIVE_MASK = (1 << SHARED_SHIFT) - 1; |
| |
| |
| static int sharedCount(int c) { return c >>> SHARED_SHIFT; } |
| |
| static int exclusiveCount(int c) { return c & EXCLUSIVE_MASK; } |
| |
| int 是32位,将其拆分成两个无符号short |
| 高位表示读锁 低位表示写锁 |
| 0000000000000000 0000000000000000 |
| |
| 两种锁的最大次数均为65535也即是2的16次方减去1 |
| |
| 读锁二进制表示:每次都从当前的状态加上65536 |
| 0000000000000000 0000000000000000 |
| 0000000000000001 0000000000000000 |
| ----------------------------------- |
| 0000000000000001 0000000000000000 |
| 0000000000000001 |
| ----------------------------------- |
| 写锁:每次都直接加1 |
| 0000000000000000 0000000000000000 |
| 0000000000000000 0000000000000001 |
| ----------------------------------- |
| 0000000000000000 0000000000000001 |
| 0000000000000000 1111111111111111 |
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术