首页 > 编程语言 >Java 同步锁ReentrantLock与抽象同步队列AQS

Java 同步锁ReentrantLock与抽象同步队列AQS

时间:2022-11-15 07:44:06浏览次数:47  
标签:node Node 同步 Java AQS 队列 获取 线程 节点

AbstractQueuedSynchronizer 抽象同步队列,它是个模板类提供了许多以锁相关的操作,常说的AQS指的就是它。AQS继承了AbstractOwnableSynchronizer类,AOS用于保存线程对象,保存什么线程对象呢?保存锁被独占的线程对象

抽象同步队列AQS除了实现序列化标记接口,并没有实现任何的同步接口,该类提供了许多同步状态获取和释放的方法给自定义同步器使用,如ReentrantLock的内部类Sync。抽象同步队列支持独占式或共享式的的获取同步状态,方便实现不同类型的自定义同步器。一般方法名带有Shared的为共享式,比如,尝试以共享式的获取锁的方法int tryAcquireShared(int),而独占式获取锁方法为boolean tryAcquire(int)

AQS是抽象同步队列,其重点就是同步队列如何操作同步队列

同步队列

双向同步队列,采用尾插法新增节点,从头部的下一个节点获取操作节点,节点自旋获取同步锁,实现FIFO(先进先出)原则。

image

理解节点中的属性值作用

  • prev:前驱节点;即当前节点的前一个节点,之所以叫前驱节点,是因为前一个节点在使用完锁之后会解除后一个节点的阻塞状态;

  • next:后继节点;即当前节点的后一个节点,之所以叫后继节点,是因为“后继有人”了,表示有“下一代”节点承接这个独有的锁

    标签:node,Node,同步,Java,AQS,队列,获取,线程,节点
    From: https://www.cnblogs.com/dennyLee2025/p/16890866.html

相关文章

  • JAVA学习
    JAVA问题解决综合问题语句FILEf=newFILE("Grades.txt");在IDEA中运行时,读取的目标文件不一定是源码所在目录下的"Grades.txt",而是源码类所属的父模块中最高级的模......
  • javaScript书写位置
    1.内部javaScript   直接写在html文件里,用script标签包住  规范:script标签写在</body>上面2.外部js:代码写在以.js结尾的文件里语法:通过scr......
  • Javascript的字符串不可变性
    JS的字符串不可变指的是字符串值是不变的,只是变量指向的地址变化了,重新在内存中开辟了空间.vara='111';vara='222';此时字符串'111'的空间依然存在内存中,重新开辟......
  • 使用JAVA实现循环相克令
    一、问题描述:循环相克令是说有两个人在玩游戏,分别出猎人、枪、狗熊中的一个,其中猎人胜枪,枪胜狗熊,狗熊胜猎人。他们两个人进行若干次比赛,然后我们判断一下每次的胜负。二、......
  • 【Java】Springboot + Redis + AOP切面实现字典翻译
     使用案例演示:先开发了一个简单的Demo:普通DTO类注解翻译的字段和翻译来源  在需要翻译的方法上注解@Translate  接口返回结果:  框架思路:1、标记的......
  • java调用WPS或pdfcreator的com接口实现doc转pdf
    使用了jacob.jar来调用activex控件,本机需安装WPS或pdfcreator。还需要jacob.jar以及jacob.dll请看附件jacob.dll需要放置在系统system32下,如果系统是c盘:C://windows/sys......
  • java——接口作为方法的参数和返回值
    接口作为方法的参数和返回值packagecn.itcast.day11.demo07;importjava.util.ArrayList;importjava.util.List;/*java.util.List正是ArrayList所实现的接口。......
  • java-io基础
    一、流的分类1、按操作的数据单位或传输方式:字符流,字节流。字节是给计算机看的,字符是给人看的2、数据的流向:输入流,输出流3、流的角色:文件流(节点流),处理流从数据来源或操......
  • 【Javaweb】了解link标签
    link标签的属性标签就是定义文档和外部的关系,常见用途是链接样式表。通常指存在于head部分。规定被连接文档的位置<linkrel='stylesheet'href='./ease.css'type='t......
  • 【Java复健指南13】OOP高级04【告一段落】-四大内部类
    四大内部类一个类的内部又完整的嵌套了另一个类结构。classOuter{//外部类classlnner{//内部类}}classOther{//外部其他类}被嵌套的类称为内......