摘要: 目录1. 是什么2. 如何使用3. 原理3.1. 构造方法3.2. add方法3.2.1. 先加锁3.2.2. 复制数组并在这份数组上操作3.2.3. 将复制的数组set回属性3.3. remove方法3.3.1. 找到要删除元素的位置3.3.2. 加锁并把除了被删除之外的其他元素复制到新数组中,s 阅读全文
posted @ 2025-06-25 21:49 ThinkerQAQ 阅读(184) 评论(0) 推荐(0)
摘要: 目录1. 是什么2. 如何使用2.1. CountDownLatch VS CyclicBarrier3. uml4. 构造方法4.1. Sync【AQS子类】5. countDown方法5.1. 使用AQS释放锁5.1.1. 尝试释放锁5.1.2. 所有锁释放成功后,移除AQS队列中SIGNAL的 阅读全文
posted @ 2025-06-25 14:32 ThinkerQAQ 阅读(226) 评论(0) 推荐(1)
摘要: 目录1. 是什么2. 如何使用2.1. 不带Runnable2.2. 带Runnale3. 原理分析3.1. uml3.2. 构造方法3.2.1. 使用Lock和Condition实现3.3. await方法3.3.1. 首先是加锁3.3.2. 然后减信号量3.3.3. 最后一个到达的需要执行pre 阅读全文
posted @ 2025-06-25 07:30 ThinkerQAQ 阅读(243) 评论(0) 推荐(1)
摘要: 目录1. 是什么2. 如何使用3. 实现原理3.1. uml3.2. 创建Condition对象3.2.1. 创建AQS.ConditionObject对象3.2.1.1. ConditionObject内部也有一个双向队列3.3. await方法【阻塞等待】3.3.1. 加入condition队列 阅读全文
posted @ 2025-06-24 21:45 ThinkerQAQ 阅读(75) 评论(0) 推荐(1)
摘要: 目录1. 是什么1.1. synchronized vs ReentranLock2. 实现原理2.1. uml图3. 公平锁3.1. 如何使用3.2. 原理分析3.2.1. 构造方法3.2.1.1. 底层使用AQS实现3.2.2. 加锁3.2.2.1. 调用公平锁的lock方法3.2.2.2. 调 阅读全文
posted @ 2025-06-24 11:03 ThinkerQAQ 阅读(308) 评论(0) 推荐(1)
摘要: 目录1. JVM对锁的优化1.1. 锁的消除1.2. 锁的粗化1.3. 偏向锁1.4. 适应性锁2. 锁的膨胀过程分析2.1. 无锁2.2. 偏向锁2.3. 轻量级锁2.4. 重量级锁3. 应用层次优化锁的使用3.1. 降低争用程度方法4. 调整自旋的次数5. 参考 1. JVM对锁的优化 JDK1 阅读全文
posted @ 2025-06-23 21:50 ThinkerQAQ 阅读(71) 评论(0) 推荐(0)
摘要: 目录1. 需求2. 定义属性2.1. 锁的排他性2.2. 锁的状态2.3. 阻塞、唤醒线程2.4. 使用队列保存抢占锁失败的线程3. 添加加锁、解锁操作3.1. 基本流程3.2. 唤醒后继续抢占锁3.3. 加入公平锁的特性4. 最终定版5. 测试6. 流程 我们可以自己动手写一个简单的AQS,以更好 阅读全文
posted @ 2025-06-23 19:36 ThinkerQAQ 阅读(63) 评论(0) 推荐(0)
摘要: 目录1. 是什么2. 如何使用3. 原理分析3.1. 构造方法3.1.1. 由头尾节点和代表锁状态的字段组成3.1.2. Node是个双向队列节点3.2. 获取锁的逻辑3.2.1. 尝试获取锁3.2.2. 尝试获取锁失败,则加入AQS队列3.2.3. 阻塞等待,被唤醒后不停得抢占锁3.2.3.1. 阅读全文
posted @ 2025-06-23 19:35 ThinkerQAQ 阅读(213) 评论(0) 推荐(0)
摘要: 目录1. 是什么1.1. 乐观锁与悲观锁1.2. CAS2. 如何使用2.1. Atomic是什么2.2. Atomic使用2.3. Atomic原理分析2.3.1. 构造方法2.3.2. addAndGet方法2.3.3. getAndIncrement2.3.4. decrementAndGet 阅读全文
posted @ 2025-06-23 11:13 ThinkerQAQ 阅读(236) 评论(0) 推荐(1)
摘要: 目录1. 是什么2. 什么情况 volatile 比 synchronized 更合适2.1. 例子2.2. 无法停止的原因分析2.3. 解决方法2.4. volatile vs synchronized3. 汇编源码实验3.1. 下载编译 hsdis-amd64.dll3.2. 放入 JRE bi 阅读全文
posted @ 2025-06-22 19:32 ThinkerQAQ 阅读(239) 评论(0) 推荐(0)