synchronized获取偏向锁流程图
2020-06-24 16:57:49 15 举报
synchronized获取偏向锁流程
作者其他创作
大纲/内容
是
判断当前的对象头里面的线程ID是否是自己的
Threadid | blased_lock(1) | lock(01)
唤醒当前暂停的线程
暂停当前只有偏向锁的线程
撤销偏向锁null|Threadid|blased_lock(1)|lock(01)
判断是否支持偏向锁
不是
没有执行完同步代码块
同步代码块
直接获取重量的锁
无锁
正常执行代码
CAS原子操作来修改对象头里面的数据Threadldlbiased. lock
使用轻量级锁
失败
进行锁的撤销
支持的
成功
获取偏向锁:1.获取到对象头2.根据对象头里面的标志位来进行判断
不支持
进行锁的撤销操作
是否成功
如果已经执行完代码块
判断是否偏向锁
进行锁升级
判断执行状态
执行代码
执行cas操作替换线程id
判断锁的状态
收藏
0 条评论
下一页