【求解答】重量级锁相关问题

climy007 2020-08-14 06:36:06
《深入理解JAVA虚拟机》一书中说:当轻量级锁升级到重量级锁的时候,锁对象markword里储存的是指向重量级锁的指针。
疑问:锁对象本身就是锁了,那markword里面储存的重量级锁指针又是哪里的锁?

求解惑,感谢!
...全文
1938 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
大隐藏于寺 2020-08-15
  • 打赏
  • 举报
回复
在java语言规范(java se 8) 版本中17.1章节有这么一句话:"Each object in Java is associated with a monitor, which a thread can lock or unlock. Only one thread at a time may hold a lock on a monitor.Any other threads attempting to lock that monitor are blocked until they can obtain a lock on that monitor." 这里是原文连接,翻译过来就是Java中每个对象与一个Monitor相关联,线程可以锁住或者解锁这个Monitor.同一时间只能有一个线程可以锁定某个对象Monitor.而尝试锁定该Monitor的所有其他线程将阻塞,直到它们可以在该Monitor上获得锁定为止. 回到你的问题,升级为重量级锁后java锁对象的对象头保存的就是Monitor对象的指针.这里给你看下OpenJDK的Monitor的结构和方法,objectMonitor.cpp链接 objectMonitor.hpp链接

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧