AbstractQueuedSynchronizer 抽象的队列同步器
AQS是volatile+CAS机制实现的锁模板,保证了代码的同步性和可见性。AQS定义了一套多线程访问共享资源的同步器框架,封装了线程阻塞等待挂起,解锁其他线程的逻辑,
AQS子类只需要根据状态变量,判断是否可获取锁,是否释放锁,使用LockSupport挂起,唤醒线程即可。
AQS内部维护一个同步队列(CFH队列)(FIFO),元素就是包装了线程的Node。
同步队列中首节点是获取到锁的节点,它在释放锁时会唤醒后继节点,后继节点获取到锁的同时,会把自己设为首节点。
线程会先尝试获取锁,失败则封装成Node,CAS加入同步队列的尾部。在加入同步队列尾部时,会判断先驱节点是否是Head节点,并尝试加锁(可能先驱节点刚好释放锁),
否则线程进入阻塞等待。
标签:同步,AQS,同步器,队列,线程,节点 From: https://www.cnblogs.com/tyleaf/p/17007567.html