的线程共享相同的等待队列wait queue,也就是在同一个阻塞队列中,线程持有的mode可能会不同
state属性: 作为AQS的同步状态信息属性,state具备线程安全特性(valatile & CAS...中受保护的方法来为阻塞锁和同步器对外暴露的方法提供服务
继承AQS的同步器子类将通过模板框架提供的CAS操作state方式来保证原子性,以及volatile修饰保证可见性,这样能够实时知道当前对象获取锁或者释放锁所处的状态信息...根据上述流程总结如下
AQS加锁以及解锁的过程中是根据wait status来判断是否进行加锁和释放锁,wait status可理解为AQS中的“锁”,通过CAS更新wait status的状态来实现加锁和解锁...,同时为了防止并发多线程再次修改,针对已经恢复正常的节点信息,通过PROPAGATE来控制,也就是拥有这个状态的wait status说明已经释放锁并唤醒其他线程争抢锁
AQS中通过链表的方式实现双向队列的操作...,同时为了避免并发造成存储在链表中的节点顺序错乱,于是通过CAS的方式来设置链表的head和tail,保证修改的安全性
AQS中区分mode在于存储节点的nextWaiter的指向,在AQS中,共享锁和独占锁在加锁过程中