当前位置:   article > 正文

aqs相关知识点记录_aqs waitstatus=0

aqs waitstatus=0

AQS是什么

抽象队列同步器,一个抽取了MESA模型的抽象类,封装了一些操作MESA的基本方法

AQS能做什么

AQS是JUC包的基础,基本上都是依靠aqs去实现的,用于多线程同步操作
,即,同一时间,只有一个线程在执行

AQS需要理解的属性

state

用于表示node.head是否持有锁
当state为0时,当前线程不持有锁

node

同步队列的节点,AQS中,同步队列是一个双向链表,每个线程都是一个node,并且,每个线程,都在一个 for(;;)中park,当node.head开始执行,并且state==0,并且当前node的waitStatus==-1时,会对当前node.next.thread做unpark操作,这样,就可以唤醒下一个线程

node中的head

node.head 一定是当前操作的线程

node中的waitStatus

当node.waitStatus为-1时,可以唤醒链表中的next节点

node的数据结构

独享锁

node是一个双向链表,除了head.waitStatus=0以外,所有的节点waitStatus都应该是-1

共享锁

node是一个双向链表,除了head.waitStatus=0以外,所有的节点waitStatus都应该是-1,在node.head执行之后,节点waitStatus可能为0,因为有传播机制

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/149122
推荐阅读
相关标签
  

闽ICP备14008679号