什么是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;
    }
}    
相关推荐
StackNoOverflow1 分钟前
Maven 核心知识整理
java·maven
ekkcole2 分钟前
easyexcel2.2.10版本对本地文件指定行或多行样式处理
java·easyexcel
小七mod3 分钟前
【Nacos】Nacos1.4.x服务注册源码分析
java·spring cloud·微服务·nacos·源码·集群·注册中心
于先生吖7 分钟前
Java 打车小程序 APP 源码 顺风车滴滴跑腿系统完整实现
java·开发语言·打车系统
凌冰_10 分钟前
IDEA2025 基于 Jakarta EE 开发 Servlet + Thymeleaf
java·servlet
会员源码网19 分钟前
可变参数与数组混用导致的方法调用异常
java
xiaoye370820 分钟前
Spring Bean 生命周期自定义扩展示例
java·spring boot·spring
sanyii31313120 分钟前
k8s工作负载-ReplicaSet控制器
java·git·kubernetes
会员源码网21 分钟前
泛型通配符误用导致的类型转换致命异常
java
冬夜戏雪26 分钟前
【学习日记】
java·开发语言·数据库