什么是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;
    }
}    
相关推荐
缓慢更新10 小时前
审批的加签与会签:多人意见怎么合
android·java·数据库·低代码·rxjava
yuniko-n11 小时前
【JUC】volatile 非原子性深入解析
java
sun_weitao12 小时前
极简版 MCP 工具实现方案
java·linux·服务器
金銀銅鐵13 小时前
[Java] 展示增删元素时 LinkedList 的内部变化
java·后端·ai编程
布吉岛的石头13 小时前
Java 程序员第 50 阶段3:数据工程:预训练语料清洗与去重
java·开发语言·人工智能·深度学习·transformer
大文说跨境14 小时前
防关联浏览器的指纹覆盖到什么程度:六类参数的实测与自检方法
java·指纹浏览器·tiktok运营
Carol063014 小时前
上肢及肩肘关节
java·服务器·数据库
yliucherish14 小时前
Log4Shell 复现实录:我读 OpenJDK 源码,发现两道防线的默认值竟然相反
java
维拉德14 小时前
Java新人第一次接打标需求:从抓包找接口到客户端展示
java
luobobo89614 小时前
支付回调验签连续失败三天,最后发现是网关的时间戳单位问题
java