技术 · 阅读记录
初探并发组件的基石 —— AQS
AQS (AbstractQueuedSynchronizer, 队列同步器) 在整个 JDK 并发框架中占有极其重要的位置
未有特殊说明,本文源码来源于 jdk1.6.0_45。
AbstractQueuedSynchronizer 为实现依赖于先进先出 (FIFO) 等待队列的阻塞锁和相关同步
器(信号量、事件,等等)提供一个框架。此类的设计目标是成为依靠单个原子 int 值来表示状态
的大多数同步器的一个有用基础。
属性与数据结构


其他并发组件
CountDownLatch
其使用 AQS 的共享模型。当其初始化实例时,会创建一个当前状态为 n 的 AQS 子类实例。每一个线程执行 await,就会在同步队列的队尾创建一个节点,并把自己阻塞(LockSupport.park),并等待被唤醒或者超时。每调用一次countDown,就会修改状态值(减一),并判断当前状态是否需要处理队列中的节点;如果当前状态为 0,就处理处理中的节点。