AQS队列工作原理
2020-12-24 22:31:43 6 举报
JAVA的AQS队列工作原理,详细描述了线程进来时AQS的工作状态
作者其他创作
大纲/内容
尝试获取锁state设置为1
线程3尝试获取锁,如果线程1正好释放锁,并且线程2还未被唤醒,并且lock设置的是非公平锁,那么线程3将获取锁并设置thread = 线程3,线程2继续等待
线程3尝试获取锁,如果lock为公平锁,那么线程3在尝试修改state之前会先查看等待队列,发现等待队列中有线程2,会CAS设置tail节点为自己
线程3
volatile state = 0线程1获取锁state = 1
head
线程2获取锁失败,假如等待队列,CAS设置tail的next节点为自己
thread = null线程1获取锁thread = 线程1
线程1获取锁之后设置thread = 线程1,释放锁时唤醒等待队列的head线程
等待队列
线程2
线程1
tail
0 条评论
回复 删除
下一页