轻量级锁流程
2021-04-13 11:13:55 14 举报
无锁 -> 轻量级锁 -> 重量级锁
作者其他创作
大纲/内容
mark-word | 01
mark-word | 00轻量级锁 -> A
fail
执行同步代码块
对象头
success
copy
reset
唤醒其他线程
CAS操作
完成同步块的执行释放锁(替换对象头)
执行Sync代码
复制对象头到线程A栈
change-2
自旋获取锁
线程A
无锁状态
重量级锁
尝试将对象头替换成指向线程A的指针
继续抢占锁走上面流程
轻量级锁抢占执行流程
change-1
轻量级锁
复制对象头到线程B栈
锁发生膨胀将锁头改为指向重量级锁的指针
超过自旋次数获取锁失败
mark-word | 10重量级锁 ->
尝试将对象头替换为指向线程B的指针
线程B
0 条评论
下一页