無鎖狀態,偏向鎖狀態,輕量級鎖狀態和重量級鎖

2021-09-19 04:16:50 字數 415 閱讀 4516

鎖可以公升級但不能降級,意味著偏向鎖公升級成輕量級鎖後不能降級成偏向鎖。這種鎖公升級卻不能降級的策略,目的是為了提高獲得鎖和釋放鎖的效率

偏向鎖自旋鎖

輕量級鎖

重量級鎖

偏向鎖是指一段同步**一直被乙個執行緒所訪問,那麼該執行緒會自動獲取鎖。降低獲取鎖的代價。

輕量級鎖是指當鎖是偏向鎖的時候,被另乙個執行緒所訪問,偏向鎖就會公升級為輕量級鎖,其他執行緒會通過自旋的形式嘗試獲取鎖,不會阻塞,提高效能。

重量級鎖是指當鎖為輕量級鎖的時候,另乙個執行緒雖然是自旋,但自旋不會一直持續下去,當自旋一定次數的時候,還沒有獲取到鎖,就會進入阻塞,該鎖膨脹為重量級鎖。重量級鎖會讓其他申請的執行緒進入阻塞,效能降低。

偏向鎖 輕量級鎖

大多數情況下,不僅不存在多執行緒競爭,而且乙個執行緒會一直去執行乙個同步 塊。基於這種情況,當環境中只有乙個執行緒時,使用無鎖機制 偏向鎖。當某個執行緒獲取到物件的鎖後,會將物件的物件頭設定為 鎖標誌位置為01,偏向鎖標誌為1,偏向執行緒id為當前執行緒的id 並在當前執行緒的棧幀中記錄偏向鎖資訊。...

輕量級鎖和偏向鎖

synchronized會在物件的頭部打標記,這個加鎖的動作是必須要做的,悲觀鎖通常還會做許多其他的指令動作,輕量級鎖希望通過cas實現,它認為通過cas嘗試修改物件頭部的mark區域的內容就可以達到目的,由於mark區域的寬度通常是4 8位元組,也就是相當於乙個int或者long的寬度,是否適合於...

偏向鎖 輕量級鎖 重量級鎖

首先簡單說下先偏向鎖 輕量級鎖 重量級鎖三者各自的應用場景 偏向鎖 只有乙個執行緒進入臨界區 輕量級鎖 多個執行緒交替進入臨界區 重量級鎖 多個執行緒同時進入臨界區。還要明確的是,偏向鎖 輕量級鎖都是jvm引入的鎖優化手段,目的是降低執行緒同步的開銷。比如以下的同步 塊 synchronized l...