当前位置: 首页 > article >正文

什么是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 基本的属性——源码

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;
    }
}    

http://www.kler.cn/a/153833.html

相关文章:

  • 时代变迁对传统机器人等方向课程的巨大撕裂
  • C++设计模式:建造者模式(Builder) 房屋建造案例
  • 【多状态dp】买卖股票的最佳时机III
  • C 语言标准库 - <stdlib.h>
  • CFD 应用于分离过程:旋风分离器(第 2 部分)
  • MySQL安装及数据库基础
  • 如何解决 Python ModuleNotFoundError 错误
  • C 标准库函数
  • 避免20种常见Selenium自动化测试异常,让你的测试更加稳定和可靠!
  • Python---文件操作综合案例
  • 4个Pycharm高效插件
  • 计算机视觉(OpenCV+TensorFlow)
  • 【linux】日志有哪些
  • 鸿蒙(HarmonyOS)应用开发——容器组件(List组件)
  • python 加马赛克
  • clickhouse -- clickhouse解析复杂JSON数组
  • 【开源】基于JAVA的超市账单管理系统
  • Java核心知识点整理大全26-笔记
  • 解决ubuntu编译aosp报错问题:error while loading shared libraries: libncurses.so.5
  • Oracle(2-10) User-Managed Backups
  • Opencv拖动条控制均值滤波卷积核大小,拖动条控制是否保存(涉及知识点:cv2.createTrackbar和cv2.getTrackbarPos的使用)
  • 【性能测试】JMeter:集合点,同步定时器的应用实例!
  • 【前端】大文件切片上传性能优化 使用 web worker 多线程
  • 2023年12月2日历史上的今天大事件早读
  • Boot工程快速启动【Linux】
  • el-select实现可复制一段“关键词“(多个)实现搜索 以及 回车选中搜索项