Java并发框架JUC中的AQS原理是什么?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3808个文字,预计阅读时间需要16分钟。
为什么需要AQS锁和协作类?共同点如下:门、像ReentrantLock和Semaphore有相似之处,实际上,不仅是ReentrantLock和Semaphore,包括CountDownLatch、ReentrantReadWriteLock等都具有类似的特性。
为什么需要AQS
- 锁和协作类有共同点:闸门
- 像ReentrantLock和Semaphore有一些共同点,并且很相似
- 事实上,不仅仅是ReentrantLock和Semaphore,包括CountDownLatch、ReentrantReadWriteLock都有这样类似的“协作”(或者叫同步)功能,其实它们底层都使用了同一个共同的基类——AQS
- 像上面提到的那些协作类,它们有很多工作都是类似的,所以如果能提取出一个工具类,那么就可以直接使用,对于ReentrantLock和Semaphore而言就可以屏蔽很多细节,只需要关注它们自己的“业务逻辑”就可以了
Semaphore和AQS的关系
- Semaphore内部有一个Sync类,Sync继承了AQS
- CountDownLatch也是一样的
AQS的重要性和地位
- AbstractQueuedSynchronizer是大名鼎鼎的Doug Lea写的,从JDK1.5加入的一个基于FIFO等待队列实现的一个用于实现同步器的基础框架,使用IDEA查看AQS的实现类,可以发现实现类如下:
AQS介绍
AQS:AbstractQuenedSynchronizer抽象的队列式同步器。
本文共计3808个文字,预计阅读时间需要16分钟。
为什么需要AQS锁和协作类?共同点如下:门、像ReentrantLock和Semaphore有相似之处,实际上,不仅是ReentrantLock和Semaphore,包括CountDownLatch、ReentrantReadWriteLock等都具有类似的特性。
为什么需要AQS
- 锁和协作类有共同点:闸门
- 像ReentrantLock和Semaphore有一些共同点,并且很相似
- 事实上,不仅仅是ReentrantLock和Semaphore,包括CountDownLatch、ReentrantReadWriteLock都有这样类似的“协作”(或者叫同步)功能,其实它们底层都使用了同一个共同的基类——AQS
- 像上面提到的那些协作类,它们有很多工作都是类似的,所以如果能提取出一个工具类,那么就可以直接使用,对于ReentrantLock和Semaphore而言就可以屏蔽很多细节,只需要关注它们自己的“业务逻辑”就可以了
Semaphore和AQS的关系
- Semaphore内部有一个Sync类,Sync继承了AQS
- CountDownLatch也是一样的
AQS的重要性和地位
- AbstractQueuedSynchronizer是大名鼎鼎的Doug Lea写的,从JDK1.5加入的一个基于FIFO等待队列实现的一个用于实现同步器的基础框架,使用IDEA查看AQS的实现类,可以发现实现类如下:
AQS介绍
AQS:AbstractQuenedSynchronizer抽象的队列式同步器。

