ReentrantLock
1.1概述
ReentrantLockz主要利用的是CAS+AQS队列来实现,它是一种独占锁、可重入锁,支持公平锁和非公平锁。
1.2AQS(abstractQueuedSynchronizer抽象队列同步器)
AQS是一个用于构建锁和同步容器的空间。AQS使用一个先进先出的队列表示排队等待的线程,队列头节点称为“哨兵节点”或者“哑节点”,它不与任何线程关联。其他的节点与等待线程关联,每个节点维护一个等待状态waitStatus。
ReentractLock的基本实现可以概况为:先通过CAS尝试获取锁,如果获取失败,则加入AQS队列并且被挂起。当锁被释放之后,排在队列队首的线程就会被唤醒,然后CAS再次尝试获取锁。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理