JUC - AbstractQueuedSynchronizer(AQS) 源码分析
AbstractQueuedSynchronizer,同步器,以下简称AQS。本文从源码分析AQS的核心方法和实现原理。
AQS内部有两组重要的成员变量:
int类型的status变量,通过CAS操作(详见:CAS深度分析)改变status值来控制当前线程能否访问资源以及并发数量。
Node类型的head和tail两个变量,两个变量维护了一个FIFO的同步队列,将获取访问权限失败的线程构造成Node节点加入队列中,释放资源时再来唤醒队列中阻塞的线程。(Node类型主要包涵节点的状态,当前线程的引用,以及前驱节点和后置节点的引用)