
AQS中可重入锁ReentrantLock源码一加锁过程
发布日期:2021-05-10 22:30:16
浏览次数:23
分类:精选文章
本文共 238 字,大约阅读时间需要 1 分钟。
ReentrantLock的加锁流程可概括为以下步骤:
尝试加锁(tryAcquire):首先,线程尝试通过原子操作(CAS)直接获取锁。如果成功,直接返回;否则继续下一步。
创建节点并入队:如果尝试加锁未成功,线程创建一个节点(包含当前线程和锁状态),将其添加到CLH双向链表队列的尾部。
等待或唤醒:线程进入死循环,重复尝试获取锁。如果成功,唤醒前一个在队列中等待的线程,并标记当前线程被打断。
这种机制确保线程采用FIFO策略,避免高优先级线程霸占锁,确保资源利用率高。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月11日 03时18分21秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
虚函数
2019-03-09
【自学Flutter】4.1 Material Design字体图标的使用(icon)
2019-03-09
【换行符】什么时候用cin.get()吃掉输入流中的换行符
2019-03-09
【二叉树】已知后序与中序求先序
2019-03-09
广东外语外贸大学第三届网络安全大赛Writeup
2019-03-09
SpringBoot使用RedisTemplate简单操作Redis的五种数据类型
2019-03-10
Thymeleaf sec:authorize 标签不生效
2019-03-11
微信JS-SDK DEMO页面和示例代码
2019-03-11
一张图搞定RPC框架核心原理
2019-03-11
他来了他来了,他带着云栖大会的免费门票走来了
2019-03-11
获取linux 主机cpu类型
2019-03-11
Flask--简介
2019-03-11
16 python基础-恺撒密码
2019-03-11
Frame--Api框架
2019-03-11
Boostrap技能点整理之【网格系统】
2019-03-11
javaWeb服务详解(含源代码,测试通过,注释) ——Emp的Dao层
2019-03-11
Git简单理解与使用
2019-03-11