什么是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 分钟前
LAN Device Monitor 第二周学习文档
java·服务器·数据库
Wang's Blog12 分钟前
Java 项目实战: 交友项目 - 查询推荐动态
java·开发语言·交友
jaysee-sjc18 分钟前
【苍穹外卖】Day10:定时任务与 WebSocket 实时提醒实战
java·开发语言·javascript·数据库·vue.js·websocket·网络协议
独隅22 分钟前
Claude 高效应用实战指南
android·java·开发语言·claude·claude code
WJ.Polar28 分钟前
异常、泛型、集合、Stream流
java·数据结构
牧瀬クリスだ29 分钟前
Redis五大数据类型全解析:从入门到实战
java·数据库·redis·后端·缓存
Nuanyt40 分钟前
LeetCode Hot 100 · 双指针 3 题 Java
java·笔记·算法·leetcode·双指针
Wang's Blog1 小时前
Java 项目实战: 交友项目 - 圈子互动
java·开发语言·交友
Rain的Java大神之路1 小时前
北漂 13 年,我把 Java 家底钉成了这张知识图谱(全站免费)
java·后端·程序员
wuminyu1 小时前
JVM规范学习总结-Class文件结构
java·linux·c语言·jvm·c++