AQS--AbstractQueuedSynchronizer
1. 概念
内部使用队列:先进先出
2. 方法
独占式获取:accquire、acquireInterruptibly、tryAcquireNanos
共享式获取:acquireShared、acquireSharedInterruptibly、tryAcquireSharedNanos
独占式释放锁:release
共享式释放锁:releaseShared
需要子类覆盖的流程方法
独占式获取 tryAcquire
独占式释放 tryRelease
共享式获取 tryAcquireShared
共享式释放 tryReleaseShared
这个同步器是否处于独占模式 isHeldExclusively
同步状态state:
getState:获取当前的同步状态
setState:设置当前同步状态
compareAndSetState 使用CAS设置状态,保证状态设置的原子性
AQS中的数据结构-节点和同步队列
竞争失败的线程会打包成Node放到同步队列,Node可能的状态里:
CANCELLED:线程等待超时或者被中断了,需要从队列中移走
SIGNAL:后续的节点等待状态,当前节点,通知后面的节点去运行
CONDITION :当前节点处于等待队列
PROPAGATE:共享,表示状态要往后面的节点传播
0, 表示初始状态
posted on 2019-02-08 18:57 1625101366 阅读(73) 评论(0) 收藏 举报
浙公网安备 33010602011771号