轻量锁流程图
2021-07-03 23:51:03 0 举报
java轻量级锁流程图
作者其他创作
大纲/内容
是
创建监视器对象、并初始化
mark word的锁记录指针是否指向当前线程的帧栈中的lock record
10次自旋
CAS替换锁对象锁记录指向当前的lock record
为lock record的displaced mark word赋值为锁对象的mark word为lock record的obj对象指向锁对象
轻量级锁膨胀流程
自旋获取锁
锁对象正处于膨胀中
CAS操作是否成功
否 表示重入
是否自旋失败
当前线程自旋直到膨胀成功
是否修改成功
如果锁对象已有监视器
访问锁对象的mark word
返回锁监视器对象
创建lock record锁记录
为lock record的displaced 为null为lock record的obj对象指向锁对象
将锁对象的mark word设置到去监听器对象设置监听器的ower属性为轻量级线程的持有者
线程A
更改锁对象的状态为膨胀中
获取锁对象检查对象状态
创建lock record并初始化
否
执行同步代码块
访问同步代码块
轻量级线程触发膨胀
0 条评论
下一页