AQS的应用


什么是AQS
口述:全称是 AbstractQueuedSynchronizer,是一个框架,提供了这种 通用的同步器机制,它里面也是定义了很多的方法,像获取锁啊释放锁啊,其实释放啊获取啊是基于state属性来做的,state属性呢表示了当前资源的状态,是需要子类去定义和维护这个状态的,控制如何获取锁和释放锁,对state状态的修改也是用到了CAS机制,保证了修改的正确性,其实AQS里面还定义了很多其他的方法,他呢是一个通用的框架,像ReentrantLock、Countdownlatch、信号量啊就是基于AQS实现的。

1. 概述

在这里插入图片描述

  • 用 state 属性来表示资源的状态(分独占模式和共享模式),子类需要定义如何维护这个状态,控制如何获取锁和释放锁
    • getState - 获取 state 状态
    • setState - 设置 state 状态
    • compareAndSetState - cas 机制设置 state 状态
  • 提供了基于 FIFO 的等待队列,类似于 Monitor 的 EntryList
  • 条件变量来实现等待唤醒机制,支持多个条件变量,类似于 Monitor 的 WaitSet

AQS 要实现的功能目标

  • 阻塞版本获取锁 acquire 非阻塞的版本尝试获取锁 tryAcquire
  • 获取锁超时机制
  • 通过打断取消机制
  • 独占机制及共享机制
  • 条件不满足时的等待机制

2. ReentrantLock 原理

相关推荐

  1. AI技术应用利弊

    2023-12-13 08:08:01       30 阅读
  2. Docker在实际应用开发中应用-AI生成

    2023-12-13 08:08:01       53 阅读
  3. 基于 AWS Lambda SaaS 应用教程

    2023-12-13 08:08:01       60 阅读
  4. 下一代Edge AI应用初探

    2023-12-13 08:08:01       46 阅读
  5. AI】人工智能应用及挑战

    2023-12-13 08:08:01       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-13 08:08:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-13 08:08:01       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-13 08:08:01       87 阅读
  4. Python语言-面向对象

    2023-12-13 08:08:01       96 阅读

热门阅读

  1. (第27天)Oracle 数据泵转换分区表

    2023-12-13 08:08:01       61 阅读
  2. 使用NanoPi NEO4进行rtsp拉流

    2023-12-13 08:08:01       61 阅读
  3. (第30天)Oracle 数据泵常用技巧总结

    2023-12-13 08:08:01       47 阅读
  4. 无重复字符的最长子串(LeetCode 3)

    2023-12-13 08:08:01       70 阅读
  5. PgSQL高级

    2023-12-13 08:08:01       61 阅读
  6. 环境部署centos

    2023-12-13 08:08:01       53 阅读
  7. 22222222222222222

    2023-12-13 08:08:01       41 阅读
  8. 华纳云:Ubuntu怎么安装并使用Docker

    2023-12-13 08:08:01       56 阅读
  9. 研发管理的挑战、本原与方案

    2023-12-13 08:08:01       70 阅读
  10. RISC-V 流水线 CPU 设计 Verilog

    2023-12-13 08:08:01       43 阅读