文章目录
- AQS
- 引言
- AQS 的原理
- AQS 应用
- 举例1:Semaphore
- 举例2:ReentrantLock
- AQS 的案例分析
- 问题背景
- 解决方案
AQS
引言
在我们的日常生活和工作中,往往需要协调各个线程之间的执行顺序和资源使用,而AQS(AbstractQueuedSynchronizer)即为 Java 并发包中提供的一种解决办法。
在本文中,我们将会讲解 AQS 的原理、应用,并通过案例分析深入阐述其在实际应用中的历史和现状。
AQS 的原理
AQS 机制的核心就是通过一个 FIFO 的队列来对等待获取资源的线程进行排序,每次资源的释放都会导致头节点的唤醒,而唤醒后的线程将会尝试再次抢占资源。AQS 实现了一些常用的同步工具类,比如锁、Semaphore、CountDownLatch 等等,这些同步工具最终的实现都是由 AQS 来实现的。