JUC 系列:AQS -->学习 Doug Lea 大神思想

AQS:全称是AbstractQueuedSynchronizer,一个并发同步管理框架类,是 JUC 的灵魂抽象类。如果要自己去实现一个同步管理框架呢?

个人学习寒食君大佬的解析后觉得可以分为三点:

  1. 通用性,下层实现透明的同步机制,同时给上层提供业务代码编写的功能
  2. 利用 CAS 操作,原子的修改共享标志位(由这个标志位来判断共享资源是否空闲)
  3. 等待队列(埋伏笔:情况①:当共享资源被占用时,直接返回结果、情况②:当共享资源被占用时,让后续的线程进入到等待队列中等待)

与 AQS 的结构有着异曲同工之妙,下面就记录下 AQS 的要素吧(本文只写了独占式的过程,共享式也大差不差)。

AQS 的成员变量属性

在这里插入图片描述
这里的state(注意使用了 volatitle关键字修饰)为什么不是布尔类型而是整数类型呢?因为这就牵扯到了 AQS 的两种模式 --> 共享模式、独占模式

  • 独占模式:当共享资源被一个线程占用时,其他线程无法占用
  • 共享模式:当共享资源被一个线程占用时,其他共享模式下的线程能占用

state为了表示占有资源的线程数量,所以采用的是整数类型。

队列里的节

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值