📚 分类
多线程
🕵🏽‍♀️ 问题描述
什么是AQS?
👨‍🏫 问题讲解
❒ 全称是AbstractQueuedSynchronizer,即抽象队列同步器。它是构建锁或者其他同步组件的基础框架。

✔ status 0 无锁 1 有锁
✔ 抢到锁的执行,抢不到排队,执行顺序先进先出
✔ 新来的锁和队列中的第一个锁抢资源是非公平锁
✔ 新的线程到队列中等待,只让队列中的head线程获取锁,是公平锁

AQS与Synchronized的区别

❒ synchronized

✔ 关键字,c++语言实现
✔ 悲观锁,自动释放锁
✔ 锁竞争激烈都是重量级锁,性能差

❒ AQS

✔ java语言实现
✔ 悲观锁,手动开启和关闭
✔ 锁竞争激烈的情况下,提供了多种解决方案。
🏳️‍🌈 问题总结
❒ 什么是AQS?

✔ 是多线程中的队列同步器。是一种锁机制,它是做为一个基础框架使用的,像ReentrantLock、Semaphore都是基于AQS实现的
✔ AQS内部维护了一个先进先出的双向队列,队列中存储的排队的线程
✔ 在AQS内部还有一个属性state,这个state就相当于是一个资源,默认是0(无锁状态),如果队列中的有一个线程修改成功了state为1,则当前线程就相等于获取了资源
✔ 在对state修改的时候使用的cas操作,保证多个线程修改的情况下原子性
📖 问题信息
📈 浏览次数:22 | 📅 更新时间:2025-12-01 22:02:26
📦 创建信息
🏷️ ID:108 | 📅 创建时间:2024-12-23 09:12:42