AQS
2021-10-02 10:17:00 0 举报
AQS API图示
作者其他创作
大纲/内容
compareAndSetStateCAS更新状态
doAcquireSharedNanos共享模式带中断获取锁
setStatue设置状态值
tail等待队列尾节点
API层
doAcquireInterruptibly共享模式获取锁
addWaiter根据模式节点创建或加入队列
state同步状态
acquireShared共享模式获取
tryRelease独占模式释放锁
getQueuedThreads正在等待获取的线程数
tryAcquireSharedNanos共享模式带超时获取锁
排队方法层
getSharedQueuedThreads共享模式排队的线程数
tryAcquireShared共享模式获取锁
apparentlyFirstQueuedIsExclusive判断第一个节点是否为独占模式
getState同步状态当前值
tryReleasedShared共享模式释放锁
setHead设置头节点
获取锁的方法
doReleaseShared共享模式下,传播值
cancelAcquire取消尝试acquire操作
doAcquireNanos独占模式带超时获取锁
hasQueuedPredecessors是否有线程在等待且不是当前线程
getExclusiveQueuedThreads独占模式排队的线程数
队列相关方法
spinForTimeoutThreadShold自旋超时,挂起时间
doAcquireInterruptibly独占模式带中断获取锁
tryAcquireNanos独占模式带超时获取锁
队列判断方法层
hasQueuedThreads是否有线程正在等待获取
selfInterrupt中断当前线程
isQueued给定线程是否在排队
shouldParkAfterFailedAcquire检查并更新未能获取的节点状态
doAcquireSharedInterruptibly共享模式带中断获取锁
数据流程方法方法
tryAcquire独占模式获取锁
release独占模式释放
acquireInterruptibly独占模式获取
getQueueLength等待队列线程数
releaseShared共享模式释放
acquireQueued从队列中获取
unparkSuccessor唤醒后继节点线程
head等待队列头节点
acquire独占模式获取
acquireSharedInterruptibly共享模式获取
数据提供层
setHeadAndPropagate设置头节点并进行传播
enq节点加入到队列
getFirstQueuedThread获取队列的第一个线程
锁获取方法层
hasContended是否有线程争用过此同步器
0 条评论
下一页