AQS深入研究
JUC中很多锁和并发工具类的实现都依赖于AQS。
AQS方法很多,主要做了三件事情:
1. 管理同步状态。
2. 维护同步队列。
3. 阻塞和唤醒线程。
从行为上区分就是获取和释放锁。
从模式上区分是独占锁和共享锁。
实现原理:
AQS内部维护了一个FIFO队列来管理锁。一个线程首先去尝试获取锁,如果失败时,将线程和等待状态等信息打包成Node节点,加入到同步队列中阻塞起来。当持有锁的线程释放锁时,就会唤醒队列中的后继线程。
AQS方法很多,主要做了三件事情:
1. 管理同步状态。
2. 维护同步队列。
3. 阻塞和唤醒线程。
从行为上区分就是获取和释放锁。
从模式上区分是独占锁和共享锁。
实现原理:
AQS内部维护了一个FIFO队列来管理锁。一个线程首先去尝试获取锁,如果失败时,将线程和等待状态等信息打包成Node节点,加入到同步队列中阻塞起来。当持有锁的线程释放锁时,就会唤醒队列中的后继线程。