偏向锁升级轻量级锁后续处理问题
- 如果 thread1 获取了偏向锁,此时对象头
Mark Word
中的 ThreadID 为 thread1 - thread1 执行同步块到一半的时候,thread2 尝试获取锁,CAS 替换
Mark Word
的 ThreadID 失败,则会开始偏向锁撤销 - 在 thread1 到全局安全点的时候,暂停 thread1,检查 thread1 的状态,发现 thread1 暂未退出同步块,此时升级轻量级锁
- 此时升级轻量级锁做了哪些事?后续 thread1 和 thread2 如何处理?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
升级就是把bias thread栈中最早的Lock Record的displaced markword改成无锁状态的mark word 然后把锁对象的mark word改成指向这个Lock Record的指针,就变成轻量级锁了
后续的话就是轻量级锁的逻辑啊 thread1继续拿着锁 thread2自旋等待