首页 > 其他分享 >AQS公平锁的流程

AQS公平锁的流程

时间:2023-09-03 16:44:06浏览次数:41  
标签:node head AQS cas 流程 next tail 公平 节点

reentrantd的lock执行的是aqs的acquire方法

1 tryAcquire

cas设置state的状态从0设置为1,成功则获取到锁,不成功则进行下一步

 2、addWaiter

 没有或取到锁,构建一个node,因为第一次队列没有元素,头部和尾部节点为空,走enq方法会将head和tail都指向一个new Node(),然后将tail指向等待的node节点

后面先当tail不等于null,会尝试cass设置当前node节点为尾部节点,失败也会进入enq方法将节点添加到尾部节点去

 

 3.1首先判断当前节点是不是head的next节点,如果是的话,说明该节点是排在第一位的,会tryAcquire获取锁并且将head指向当前节点

 3.2、当排在第一位的节点获取tryAcquire失败后,则进入是否park休眠判断,当前面一个节点是大于0为1取消状态时候,则

需要do while找到最近的一个节点,并将取消的节点剔除,默认节点是状态是0,然后cas设置为-1(SIGNAL),则可以安心进入

休眠了

 3.3 线程休眠

 

 

解锁过程

1、首先tryRelease,重入锁需要减为0才会返回true,从而准备释放锁

 2、waitStatus信号如果没有变成-1,还是默认状态0,说明队列没有需要唤醒的节点,开始执行unpark方法,因为head节点要么是new出来的无意义的节点,要么是

cas获取到锁的新加入的节点,所以从head的next开始唤醒,如果next节点是被取消了,则从后往前开始唤醒。

 

标签:node,head,AQS,cas,流程,next,tail,公平,节点
From: https://www.cnblogs.com/wenwenzuiniucha/p/17675160.html

相关文章

  • AQS源码解读之ReentrantLock
    1.背景1.AQS简介AQS全称为AbstractQueuedSynchronizer(抽象队列同步器)。AQS是一个用来构建锁和其他同步组件的基础框架,使用AQS可以简单且高效地构造出应用广泛的同步器,例如ReentrantLock、Semaphore、ReentrantReadWriteLock和FutureTask等等。2.原理AQS核心思想是,如果被请求的......
  • flowable对已经部署的流程定义进行更新(实操)
    首先通过createProcessDefinitionQuery()方法获取特定流程定义(根据流程定义键和最新版本)。然后,使用deleteDeployment()方法删除旧的部署及其相关数据。接下来,我们创建新的部署对象,并使用addClasspathResource()方法添加新的流程资源文件。最后,通过deploy()方法执行部署操作。在重......
  • Lnton羚通智能分析算法基于智能算法的石油化领域生产作业流程合规检测系统
    石油化工领域的生产作业流程合规检测对于保障工厂安全运行至关重要。本文介绍了一种基于智能算法的生产作业流程合规检测方法,在传感器数据分析和模式识别方面应用了机器学习技术,提高了检测效果和准确性。通过该方法,可以及时发现和纠正不合规操作,最大限度地降低事故风险。石油化工领......
  • Lnton羚通智能分析算法检测人群异常聚集检测告警算法的流程代码
    Lnton羚通视频智能分析算法中人群异常聚集检测报警系统是基于yolov8图像识别和数据分析技术,人群异常聚集检测告警算法通过在关键区域布设监控摄像头,实时监测人员的密集程度和行为动态,分析和判断人群密集程度是否超过预设阈值,一旦发现异常聚集,将自动发出信号,并提示相关人员采取相应......
  • java基础-流程控制-day04
    目录1.if单分支2.ifelse多分支3.ifelse双分支4.随机生成一定区间的整数5switch1.if单分支publicclassTestIf01{ publicstaticvoidmain(String[]args){ //对三个数(1-6)求和 intnum1=6; intnum2=6; intnum3=5; intsum=0; sum+=nu......
  • NL50连接流程
    一、NL50-MPI设置1、打开程序IBHNetwork 2、选择IP 3、进入设置页面 4、设置IP 5、进入MPIIP设置页面 6、设置MPIIP 7、保存 ......
  • Openharmony的启动流程
    OpenHarmony启动流程OpenHarmony源码网站:http://ci.openharmony.cn/codeSearchhttps://www.lengqinjie.xyz/lxr/source/一、kernel的启动流程图:由于OpenHarmony(下面简称OH)的标准系统的底层系统是linux,所以前期和Android系统的启动没什么太大区别。都是调用到如下的代码:/kernel/l......
  • APP上架需要的准备和流程
    一上架iOS应用市场前的准备1.选择适合自己的苹果开发者账号(1)个人账号(Individual):费用99美金一年,该账号在AppStore销售者只能显示个人的ID,比如zhitianzhang,单人使用。个人账号只能有一个开发者。100个苹果的iOS设备UDID测试。(2)公司/机构账号(Company/Organization):费......
  • 2022年iOS上架及证书最新申请流程
    最近的15年,手机行业无论怎么变,ios系统依然还是占据着行业的榜首位置,而打包一个苹果的app,门槛则比较高。主要的原因在于苹果app的开发,打包时需要p12格式的证书文件和描述文件profile文件(在hbuilder和apicloud这些h5打包平台,ios证书又叫私钥证书。),而这些文件的创建则又需要苹果mac电......
  • App Store上架iOS App的详细流程
    最近负责将公司某个项目的iOS应用上架到AppStore,在上架的过程中,需要做的事情很多,但很多都不涉及到太多的技术问题,但是流程很多,而且对应用有很多要求,在上架的过程中也遇到一些问题,后也顺利解决问题,成功上架了。我觉得有必要记录一下过程及遇到的问题,希望对有需要上架的iOS开发者们......