什么是CAS, 什么是AQS

文章目录

  • [什么是CAS, 什么是AQS](#什么是CAS, 什么是AQS)

什么是CAS, 什么是AQS

CAS


AQS

AQS 全称是AbstractQueuedSynchronizer, 是juc 下一个核心的抽象类,用于构建各种同步器和锁

比如我们熟悉的 ReentrantLock、ReadWriteLock、CountDownLatch等等是基于AQS.

首先在AQS 里面,有几个核心的组成

● 有volatile 修饰的 state 变量: 共享资源的状态

● 以Node节点组成的双端队列------CLH 也是由volatile进行修饰

● 两个维护队列的Node节点head 和 tail

AQS 基本的属性------源码

java 复制代码
public abstract class AbstractQueuedSynchronizer
    extends AbstractOwnableSynchronizer
    implements java.io.Serializable {
    //头节点
    private transient volatile Node head;
    //尾节点
    private transient volatile Node tail;
    //同步状态
    private volatile int state;   
     static final class Node {
            //节点状态
            volatile int waitStatus;
            //前驱节点
            volatile Node prev;
            //后继节点
            volatile Node next;
            //当前节点所代表的线程
            volatile Thread thread;
            //等待队列使用时的后继节点指针
            Node nextWaiter;
    }
}    
相关推荐
前端炒粉1 分钟前
fetch+readablestream(Streamable)流式输出
java·服务器·前端
珍珠先生10 分钟前
第18章 泛型入门
java
我命由我1234510 分钟前
人脸识别 - 判断人脸是否在画面中央
java·人工智能·python·java-ee·人脸识别·android jetpack·android runtime
程序猿乐锅10 分钟前
从 dsh 源码看「一切皆插件」与 Spring IoC
java·网络·数据库·人工智能·后端·spring
LINgZone217 分钟前
Maven多模块依赖管理与私有JAR包策略
java·maven·jar
珍珠先生19 分钟前
第17章 集合框架:Map
java
伯远医学23 分钟前
RIP-seq 高分文献案例分享
java·前端·javascript·人工智能·算法·eclipse·html
吃杠碰小鸡24 分钟前
VsCode中使用Java
java·vscode
lq_bog30 分钟前
spring事务失效
java·数据库·spring
API快乐传递者41 分钟前
淘宝京东数据分析实战指南:从指标体系到决策落地的全链路方法论
java·大数据·数据分析