這是jvm的多執行緒優化技術.
偏向鎖,它會偏向於第乙個訪問該鎖的執行緒. 如果在接下來的執行過程中,該鎖沒有被其他的執行緒訪問,則持有偏向鎖的執行緒將永遠不需要觸發同步。
如果在執行過程中,遇到了其他執行緒搶占該鎖,則持有偏向鎖的執行緒會被掛起,jvm會嘗試消除它身上的偏向鎖,將鎖恢復到標準的輕量級鎖。
如果乙個鎖只被單執行緒用到, 那麼偏向鎖的優化是有意義的. 如果自己確定自己的**, 很多鎖就是多執行緒用, 那可以禁用偏向鎖這個優化, 從而提公升**效能.
在jdk 6以後,預設已經開啟了偏向鎖這個優化,通過jvm 引數-xx:-usebiasedlocking
來禁用偏向鎖.
Java輕量鎖 偏向鎖 自旋鎖 重量鎖
巨集觀上分為 悲觀鎖 樂觀鎖 悲觀鎖 認為寫多讀少,每次都會上鎖。樂觀鎖 讀多寫少。自旋鎖 如果持有鎖的執行緒能在很短的時間內釋放資源,那麼那些等待競爭鎖的執行緒就不需要做核心態與使用者態之間的切換進入阻塞狀態,只需要等一等 自旋 等待有鎖的執行緒釋放鎖後即可立即獲取鎖,避免使用者執行緒與核心的切換...
JVM中鎖優化,偏向鎖 自旋鎖 鎖消除 鎖膨脹
本文將簡單介紹hotspot虛擬機器中用到的鎖優化技術。互斥同步對效能最大的影響是阻塞的實現,掛起執行緒和恢復執行緒的操作都需要轉入核心態中完成,這些操作給系統的併發效能帶來了很大的壓力。而在很多應用上,共享資料的鎖定狀態只會持續很短的一段時間。若實體機上有多個處理器,能讓兩個以上的執行緒同時並行執...
JVM中鎖優化,偏向鎖 自旋鎖 鎖消除 鎖膨脹
詳見 本文將簡單介紹hotspot虛擬機器中用到的鎖優化技術。互斥同步對效能最大的影響是阻塞的實現,掛起執行緒和恢復執行緒的操作都需要轉入核心態中完成,這些操作給系統的併發效能帶來了很大的壓力。而在很多應用上,共享資料的鎖定狀態只會持續很短的一段時間。若實體機上有多個處理器,能讓兩個以上的執行緒同時...