
从 Java 锁到分布式锁
围绕锁标志、持有者、重入、等待和释放,对比 synchronized、ReentrantLock、Redisson 与 Curator 的实现。
20 篇相关内容

围绕锁标志、持有者、重入、等待和释放,对比 synchronized、ReentrantLock、Redisson 与 Curator 的实现。

通过 CopyOnWriteArrayList 的源码,说明写时复制数组、读写锁以及 add、remove、get 的实现取舍。

结合基本使用和源码,梳理 ConcurrentLinkedQueue 的单向节点、CAS 入队出队与无界线程安全特性。

对比 ArrayBlockingQueue,分析 LinkedBlockingQueue 的链表节点、双锁结构和阻塞操作。

在 AQS 和 ReentrantLock 基础上,解释 Condition 条件队列、await、signal 以及锁释放与重新获取过程。

结合生产者消费者示例,梳理 ArrayBlockingQueue 的数组结构、锁、条件队列和阻塞操作。

从许可数量和基本示例出发,说明 Semaphore 基于 AQS 的初始化、acquire、release 与公平策略。

介绍 CyclicBarrier 的回环屏障、Runnable、await、reset 和它与 CountDownLatch 的区别。

通过示例和源码说明 CountDownLatch 的计数、countDown、await 以及 AQS 关系。

介绍 StampedLock 的写锁、读锁和乐观读三种模式、stamp 生命周期,以及它与 ReentrantReadWriteLock 的区别。

解释 ReentrantReadWriteLock 的公平策略、读写重入、锁降级、Condition 及读锁写锁的状态编码。

围绕 AQS、state、可重入、公平与非公平策略,梳理 ReentrantLock 的加锁、tryLock 和解锁源码。

结合源码和队列图,梳理 AQS 的 Node 状态、独占与共享模式、入队、取消、唤醒及资源释放流程。

从许可模型和验证实验出发,解释 LockSupport 的 park、unpark、阻塞诊断与源码实现。

结合 Striped64 和 Cell 源码,说明 LongAdder 如何通过分散竞争提升高并发累加性能。

从用户信息保存示例出发,跟踪 ThreadLocal、ThreadLocalMap、弱引用和 remove 的实现。

从乐观锁和 AtomicInteger 的使用出发,结合 JUC 源码解释 CAS、Unsafe 与原子更新的关系。

先介绍红黑树的性质、旋转和插入,再说明 HashMap 链表转红黑树及相关节点操作。

沿着 HashMap 的 put 流程,说明哈希定位、链表或红黑树处理、容量阈值与 resize 扩容。

解释 HashMap 初始容量和负载因子、tableSizeFor 的二次幂计算,以及 key 哈希和数组下标定位。