讲一讲AQS

AbstractQueueSynchronized抽象队列同步器,

抽象队列同步器中主要维护了一个双向队列, 定义了一个队列的头结点head和尾结点tail,当前资源的拥有者owner,当前占用的状态数state.通过把等待线程安全的插入到队尾中实现等待队列,

当执行线程释放资源(怎么才算释放资源成功,抽象队列抽象出TryRealse等方法来让同步组件的自定义者来自行重写定义)时会获取下一个节点,并唤醒节点中的线程,节点中的线程自旋判断下自己的前节点是否是head,如果是则尝试获取同步状态(怎么才算获取同步状态成功,抽象队列抽象出TryAquire等方法来让同步组件的自定义者来自行重写实现),如果不是,则再进入等待状态.

总的来说,AQS抽象出了线程的同步等待等操作,帮我们实现了线程获取不到状态应该怎么进入等待队列,获取得到状态以后应该怎么释放资源唤醒等待队列中的线程的通用操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值