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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题