1. AQS概念及其组件
AQS基础概念及其作用
-
AQS基础概念
- AQS: 即抽象队列同步器,AbstractQueuedSynchronizer
- AQS之shared mode: 即共享锁/读锁,用于线程读取加锁,不能进行写操作,可以读读共享
- AQS之exclusive mode: 即独占锁/排他锁/写锁,用于线程原子写操作时加锁,只能一个线程持有,其他线程处于等待状态
- AQS中不同mode的线程共享相同的等待队列wait queue,也就是在同一个阻塞队列中,线程持有的mode可能会不同
- state属性: 作为AQS的同步状态信息属性,state具备线程安全特性(valatile & CAS分别保证可见性和原子性)
-
AQS主要作用
- 提供一个基于FIFO等待队列的阻塞锁和相关同步器的模板框架,即AQS
- 对于阻塞锁和同步器的实现子类,必须定义一个非对外访问的
helper class来继承AQS,利用AQS中受保护的方法来为阻塞锁和同步器对外暴露的方法提供服务 - 继承AQS的同步器子类将通过模板框架提供的CAS操作state方式来保证原子性,以及volatile修饰保证可见性,这样能够实时知道当前对象获取锁或者释放锁所处的状态信息
- 一般情况下,子类只会实现上述两种mode之一,但是对于Re
本文详细介绍了AQS(AbstractQueuedSynchronizer)的概念、组件及工作原理。AQS是一个基于FIFO等待队列的阻塞锁和同步器模板框架,提供了独占和共享两种模式。文章讲解了AQS中的state属性、Node节点、ConditionObject条件对象,以及AQS如何通过CAS操作实现线程间的同步和通信。通过对AQS的工作流程的分析,阐述了加锁和解锁的过程,帮助读者理解自定义AQS实现锁的原理。
订阅专栏 解锁全文

669

被折叠的 条评论
为什么被折叠?



