偏向锁升级轻量级锁后续处理问题

发布于 2022-09-11 18:42:04 字数 318 浏览 22 评论 0

  1. 如果 thread1 获取了偏向锁,此时对象头 Mark Word 中的 ThreadID 为 thread1
  2. thread1 执行同步块到一半的时候,thread2 尝试获取锁,CAS 替换 Mark Word 的 ThreadID 失败,则会开始偏向锁撤销
  3. 在 thread1 到全局安全点的时候,暂停 thread1,检查 thread1 的状态,发现 thread1 暂未退出同步块,此时升级轻量级锁
  4. 此时升级轻量级锁做了哪些事?后续 thread1 和 thread2 如何处理?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

野却迷人 2022-09-18 18:42:04

升级就是把bias thread栈中最早的Lock Record的displaced markword改成无锁状态的mark word 然后把锁对象的mark word改成指向这个Lock Record的指针,就变成轻量级锁了

后续的话就是轻量级锁的逻辑啊 thread1继续拿着锁 thread2自旋等待

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文