Java并发编程-AQS数据结构和图解

AQS的概念:

  队列同步器 是用来构建锁和其他基础并发组件的框架。内部维护了一个state,维护同步器状态,一个双向队列维护等待线程排队工作。运用了模板方法模式,父类抽取了公共代码和执行逻辑,子类继承复写定制化方法即可。

数据结构:

成员:    
            Node head; 头节点
            
            Node tail;  尾节点
            
            int state;    state=0 表示释放锁    state>0 表示占有锁  操作state的方法: getState   setState  compareAndSetState

主要方法:

        void acquire(int arg)
        boolean release(int arg)
        void acquireInterruptibly(int arg)
        boolean doAcquireNanos(int arg, long nanosTimeout)
         
        void acquireShared(int arg)
        boolean releaseShared(int arg)
        void acquireSharedInterruptibly(int arg)
        boolean tryAcquireSharedNanos(int arg, long nanosTimeout)

Node是内部维护的一个CLH队列。CLH 同步队列是一个 FIFO 双向队列,AQS 依赖它来完成同步状态的管理

CLH的数据结构:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值