《深入理解JAVA虛擬機》一書中說:當輕量級鎖升級到重量級鎖的時候,鎖物件markword里儲存的是指向重量級鎖的指標。
疑問:鎖物件本身就是鎖了,那markword里面儲存的重量級鎖指標又是哪里的鎖?
求解惑,感謝!
uj5u.com熱心網友回復:
在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鏈接
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/22631.html
標籤:Java相關
上一篇:2020-08-16:資料任務是怎么優化的?(資料傾斜,引數相關調節)
下一篇:spring boot2 與hibernate5 org.postgresql.util.PSQLException: 錯誤: 關系 "表" 已經存在
