偏向锁的获取、撤销和升级
2022-10-28 14:57:20 0 举报
偏向锁的获取、撤销和升级
作者其他创作
大纲/内容
偏向锁位1
线程访问同步代码块
唤醒原持有偏向锁的线程
非活跃态/已退出同步代码快
执行同步代码块
开始撤销偏向锁
升级为轻量级锁
获得偏向锁ThreadId|1(偏向锁位)|01(锁标志位)
不是
暂停持有偏向锁的线程
锁标志位01
持有偏向锁的线程达到安全点
目前状态
轻量级锁or重量级锁
是
偏向锁位0
是否偏向锁
成功
原持有偏向锁的线程释放锁null|0(偏向锁位)|01(锁标志位)
原持有偏向锁的线程状态
未退出同步代码块
重新尝试获取偏向锁
CAS替换ThreadIdE:null|0|01 V:CurrTId|1|01
MarkWord中ThreadId是否为当前线程id
收藏
0 条评论
下一页