Synchronized的底層原理和鎖的公升級

2021-10-24 19:34:07 字數 448 閱讀 5711

syncrhonized的作用方式

同步方法:鎖是當前例項物件

靜態同步方法:鎖是類物件

同步**塊:鎖是括號中的物件

實現同步的底層原理

jvm基於進入和退出monitor物件來實現同步方法和同步**塊。同步方法經過編譯後,會在常量池生成acc_synchronized的識別符號,通過給同步方法新增acc_synchronized的識別符號,實現同步。對於同步**塊,在編譯後會在同步塊前後新增monitorenter和monitorexit兩條指令,實現同步。

鎖的公升級的過程

jdk1.6前synchronized的鎖很重,但是1.6後,對synchronized關鍵字進行了優化,讓他沒有那麼重了。分為4個鎖級別,無鎖、偏向鎖、輕量級鎖和重量級鎖。

總結:偏向鎖適用於沒有競爭的情況,輕量級鎖適合同步**塊執行時間短的情況,重量級鎖適合同步**塊執行時間長的情況。

synchronized底層實現原理(保證看懂)

首先那些說看過synchronized原始碼的基本都是大聰明,synchronized根本點不進去,想弄懂它的實現原理,我們只能通過看編譯好的位元組碼檔案 整個測試類 public class synchronizedtest 位元組碼檔案 怎麼看?idea view show bytecode 再...

synchronized底層原理學習

這個是以sychronized修飾物件進行分析,假設使用了a物件進行加鎖,那麼a物件就是鎖,a物件包含有物件頭 資料和填充組成,其中物件頭包含mark word和型別指標,mark word會指向乙個監視器物件 指向監視器的引用 監視器物件包含有執行緒持有者和計數器等資訊。mark word包括有物...

synchronized底層實現原理及鎖優化

一 概述 1 synchronized作用 原子性 synchronized保證語句塊內操作是原子的 可見性 synchronized保證可見性 通過 在執行unlock之前,必須先把此變數同步回主記憶體 實現 有序性 synchronized保證有序性 通過 乙個變數在同一時刻只允許一條執行緒對其...