偏向鎖 輕量級鎖 重量鎖執行時間

2021-10-04 21:17:51 字數 1081 閱讀 4707

由於jvm啟動的時候,前4秒帶synchronized的方法,上的是輕量級鎖。原因是應為在jvm啟動時,本身就執行了很多帶synchronized關鍵字的方法,但是這些大多都是輕量級鎖。如果直接設定成偏向鎖,在鎖公升級的過程中,偏向鎖清除鎖的過程比較複雜,導致在公升級鎖過程中消耗太多的資源和時間。所以延遲偏向鎖。

public

class

a}

public

class

example

long end = system.

currenttimemillis()

; system.out.

println

(string.

format

("%sms"

, end - start));

}}

輕量級鎖執行時間

設定jvm的對應的引數

-xx:biasedlockingstartupdelay=0

設定延遲鎖引數為0

偏向鎖的執行時間

在次執行同樣的方法,時間很明顯的節省了很多。

讓兩個執行緒去競爭,膨脹成重量鎖

public

class

jolexample6}}

.start()

;}countdownlatch.

await()

;long end = system.

currenttimemillis()

; system.out.

println

(string.

format

("%sms"

, end - start));

}}

重量級鎖的執行時間

通過簡單的實驗,得到效能 排序,偏向鎖,輕量級鎖,重量級鎖

偏向鎖 輕量級鎖 重量級鎖

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

偏向鎖 輕量級鎖 重量級鎖

synchronized關鍵字就像是汽車的自動檔,現在詳細講這個過程。一腳油門踩下去,synchronized會從無鎖公升級為偏向鎖,再公升級為輕量級鎖,最後公升級為重量級鎖,就像自動換擋一樣。那麼自旋鎖在 呢?這裡的輕量級鎖就是一種自旋鎖。初次執行到synchronized 塊的時候,鎖物件變成偏...

輕量級鎖,偏向鎖,重量級鎖

物件頭資訊 使用monitor物件來實現重量級鎖,如果使用重量級鎖,加鎖過程就需要先去關聯monitor物件,然後還需要各種判斷。asychronized關鍵字實現重量級鎖的原理 monitorenter和monitorexit就是操作monitor物件,會有效能損耗,所以引入輕量級鎖。當出現重量級...