AQS原理

article/2025/10/7 18:47:39

AQS是一个构建锁和同步器的并发框架,是AbstractQueuedSynchronizer的缩写,常见AQS实现的同步器框架有ReentrantLock,Semaphore,Latch,Barrier,BlockingQueue等多种多线程访问共享资源的同步器框架,AQS是一种依赖状态(state)的同步器。

AQS具备的五大特性:

阻塞等待队列、共享/独占、公平/非公平、可重入、允许中断

用AQS构建的同步器框架实现原来都是:

1、定义内部类Sync继承AQS类

2、将同步器所有调用方法都映射到Sync对应的方法上

AQS内部维护共享变量volatile修饰的state, volatile int state=0; volatile保证多线程及时可见性

state的三种方法调用 getState() setState() compareAndSetState()[基于CAS原子操作的方法]

AQS对资源共享有两种方式:

  • Exclusive(独占):只有一个线程能执行,如ReentrantLock。又可分为公平锁和非公平锁:
    • 公平锁:按照线程在队列中的排队顺序,先到者先拿到锁
    • 非公平锁:当线程要获取锁时,无视队列顺序直接去抢锁,谁抢到就是谁的
  • Share(共享):多个线程可同时执行,如Semaphore/CountDownLatch。Semaphore、CountDownLatCh、 CyclicBarrier、ReadWriteLock等

AQS有两种等待队列:

1、同步等待队列

同步等待队列页脚CLH队列,低层是一个双向链表数据结构的队列,先进先出FIFO,存在一个head和一个tail,当线程进入队列的时候从自旋机制改成阻塞机制。

2、条件等待队列
是一个单向链表的队列,只有当该条件Condition具备时,才会存在此单向链表,或者等待线程才会被唤醒。

 AQS加锁的方法有require,释放锁的方法release

用到的设计模式是模板设计模式。

其实是基于自旋锁 、LockSupport、CAS原子操作、queue阻塞队列实现的。


http://chatgpt.dhexx.cn/article/KfWoejk4.shtml

相关文章

AQS

AQS 简介AQS原理分析AQS原理概览AQS对资源的共享方式AQS低层使用了模板方法模式 AQS组件总结 简介 AQS的全称为(AbstractQueuedSynchronizer),这个类在java.util.concurrent.locks包下面。 AQS是一个用来构建锁和同步器的框架,使…

Java技术之AQS详解

AbstractQueuedSynchronizer 简写为AQS,抽象队列同步器。它是一个用于构建锁和同步器的框架,许多同步器都可以通过AQS很容易并且高效的构造出来,以下都是通过AQS构造出来的:ReentrantLock, ReentrantReadWriteLock A…

(面经总结)一篇文章带你完整复习 Java 中的 AQS

文章目录 一、什么是AQS二、AQS的原理三、state:状态四、AQS共享资源的方式:独占式和共享式一、什么是AQS AQS(Abstract Queued Synchronizer)是一个抽象的队列同步器,通过维护一个共享资源状态(Volatile Int State)和一个先进先出(FIFO)的线程等待队列来实现一个多线…

AQS详细大分解,彻底弄懂AQS

AQS深入分析总结 AQS 很久之前便写了这篇文章,一直没有时间发出来,文章如果有写的不好的地方,欢迎大家能够指正,下面开始详细分析介绍,希望大家能够耐心读下去,肯定会受益匪浅的,AQS是Java JU…

AQS详解

AQS是AbstractQueuedSynchronizer的简称。AQS提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,如下图所示。AQS为一系列同步器依赖于一个单独的原子变量(state)的同步器提供了一个非常有用的基础。子类们必须定义改变state变量的…

一文让你彻底搞懂AQS(通俗易懂的AQS)

一文让你彻底搞懂AQS(通俗易懂的AQS) 一、什么是AQS AQS是一个用来构建锁和同步器的框架,使用AQS能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的ReentrantLock,Semaphore,其他的诸如ReentrantReadWriteLock&#x…

什么是AQS

AQS ( Abstract Queued Synchronizer )是一个抽象的队列同步器,通过维护一个共享资源状态( Volatile Int State )和一个先进先出( FIFO )的线程等待队列来实现一个多线程访问共享资源的同步框架。 一、AQS…

泛函分析之变分法

泛函数 以上截图来自于《变分法简介Part 1.(Calculus of Variations)》 变分法 研究泛函极值的方法就是所谓变分法。 以上截图来自于《最速降线的数学模型—变分法》 欧拉-拉格朗日方程

mathematica变分法和样条插值求解最小旋转曲面

mathematica求解最小面积旋转曲面 做你没做过的事叫成长,做你不愿做做的事叫改变,做你不敢做的事叫突破。—— 巴菲特 问题描述: 在一条直线的同一侧有两个已知点,试找出一条连接这两点的曲线,使这条曲线绕直线旋转所…

变分法模型的运用:生产设备的最大经济效益

上一节介绍了 动态优化模型/ 变分法 的基本思想,本节将一个变分法的运用。 目录 1 问题分析与假设 2 模型构造 3 模型求解 变分法习题 某工厂购买了一台新设备投入到生产中。一方面该设备随着运行时间的推…

简述变分法在泛函极值问题中的应用

此文主要有两部分内容,一部分是泛函的一些基本概念;第二部分是变分法在研究泛函极值问题中的应用。 第一部分 泛函 泛函是函数概念的一种扩充,函数描述的是从数到数的对应关系,从自变量到因变量的一种对应关系;而泛函…

变分法(欧拉 - 拉格朗日)和梯度下降求泛函最优解

泛函的简单理解: 是的变量, 这样的就叫泛函 . 加个积分,这样的就叫积分泛函 . 欧拉 - 拉格朗日 (E - L) 公式: 定义一个能量泛函如下: 我们的目的是找到能使 取到极值的时候 的取值,所以我们就假设 就…

第二章-最优控制中的变分法(经典变分法或古典变分法)1

是《最优控制理论与应用(邵克勇,王婷婷,宋金波)》的读书笔记,相比于其他的书,选择这本书的理由是页数少,能读完。解学书的《最优控制理论与应用》看目录感觉很全,但是太厚了,感觉看不完。 虽然…

变分法理解1——泛函简介

变分法是处理泛函的数学领域,和处理函数的传统微积分相对。 对泛函求极值的问题称为变分问题,使泛函取极值的函数称为变分问题的解,也称为极值函数。 传统的微积分中的一个常见的问题是找到一个 x x x 值使得 y ( x ) y(x) y(x) 取得最大值…

变分法证明两点之间线段最短

传送门https://zhuanlan.zhihu.com/yueaptx 变分法简介Part 1.(Calculus of Variations) Dr.Stein 计算力学 ​关注他 283 人赞了该文章 泛函数 (Functionals) 简而言之,泛函数是函数的函数,即它的输入是函数,输出…

最优控制理论 一、变分法和泛函极值问题

变分法是最优控制问题的三大基石之一,下面讨论一些变分法的常用理论。 1. 性能指标泛函 无约束最优控制问题,若固定起止时间,两端状态固定,即 x ( 0 ) x 0 , x ( t f ) x f , t ∈ [ 0 , t f ] x(0)x_0, x(t_f)x_f, t\in[0,t…

[变分法介绍]优美的旋轮线:最速下降线问题,通过费马光学原理的初等证明

[变分法介绍]优美的旋轮线:最速下降线问题,通过费马光学原理的初等证明 变分法 费马光学原理最速下降线问题旋轮线旋轮线最速下降性质的证明一些旋轮线及变形参考书目:1696年约翰伯努利在写给他哥哥雅克布伯努利的一封公开信中提出了如下的“捷线”问题:设想一个质点沿连接…

深入浅出解析变分法——一种常用的数学方法

前言:笔者从事图像处理行业,总是接触到变分法这个概念,一直没有很深入的去理解这个概念,同时我看其他大佬的博文也比较糊涂,因此最近花了一些时间好好梳理了这部分数学知识。文章共3部分,主要是对变分法的解…

变分法:在图像处理中的应用(一)

前言 最近学习稠密重建的相关知识,发现变分法通常作为一个平滑的正则项出现在残差平方和的损失函数中。而图像处理中又经常出现这类最小损失函数的优化问题,如图像分割、稠密光流、稠密重建等等,这些优化问题中都有可能涉及到变分法。因此&am…

电磁仿真原理——3. 变分法(Variationl Methods)

目录 引言线性空间的算子问题变分的计算问题欧拉公式 构造泛函的方法利用分部积分构造利用标准变分原理构造 瑞利一里茨法加权留数法本征问题变分的实际应用 引言 由于课程后面重点的矩量法和有限元法都是基于变分法进行的,变分法是它们的数学基础,实际…