Java輕量級鎖原理詳解(Lightweight Locking)

來源:互聯網
上載者:User

標籤:

大家知道,Java的多安全執行緒是基於Lock機制實現的,而Lock的效能往往不如人意。
原因是,monitorenter與monitorexit這兩個控制多線程同步的bytecode原語,是JVM依賴作業系統互斥(mutex)來實現的。
互斥是一種會導致線程掛起,並在較短的時間內又需要重新調度回原線程的,較為消耗資源的操作。

為了最佳化Java的Lock機制,從Java6開始引入了輕量級鎖的概念。

輕量級鎖(Lightweight Locking)本意是為了減少多線程進入互斥的幾率,並不是要替代互斥。
它利用了CPU原語Compare-And-Swap(CAS,彙編指令CMPXCHG),嘗試在進入互斥前,進行補救。

本文將詳細介紹JVM如何利用CAS,實現輕量級鎖。

 

原理詳解

Java Object Model中定義,Object Header是一個2字(1 word = 4 byte)長度的儲存地區。
第一個字長度的地區用來標記同步,GC以及hash code等,官方稱之為 mark word。第二個字長度的地區是指向到對象的Class。

在2個word中,mark word是輕量級鎖實現的關鍵。它的結構見下表

從表中可以看到,state為lightweight locked的那行即為輕量級鎖標記。bitfieds名為指向lock record的指標,這裡的lock record,其實是一塊分配線上程堆棧上的空間地區
用於CAS前,拷貝object上的mark word(為什麼要拷貝,請看下文)。
第三項是重量級鎖標記。後面的狀態單詞很有趣,inflated,譯為膨脹,在這裡意思其實是鎖已升級到OS-level。
在本文的範圍內,我們只關注第二和第三項即可。

為了能直觀的理解lock,unlock與mark word之間的聯絡,我畫了一張流程圖:

在圖中,提到了拷貝object mark word,由於脫離了原始mark word,官方將它冠以displaced首碼,即displaced mark word(置換標記字)。
這個displaced mark word是整個輕量級鎖實現的關鍵,在CAS中的compare就需要用它作為條件。

為什麼要拷貝mark word?
其實很簡單,原因是為了不想在lock與unlock這種底層操作上再加同步。

在拷貝完object mark word之後,JVM做了一步交換指標的操作,即流程中第一個橙色矩形框內容所述。
將object mark word裡的輕量級鎖指標指向lock record所在的stack指標,作用是讓其他線程知道,該object monitor已被佔用。
lock record裡的owner指標指向object mark word的作用是為了在接下裡的運行過程中,識別哪個對象被鎖住了。

直觀地描述了交換指標的操作。

最後一步unlock中,我們發現,JVM同樣使用了CAS來驗證object mark word在持有鎖到釋放鎖之間,有無被其他線程訪問。
如果其他線程在持有鎖這段時間裡,嘗試擷取過鎖,則可能自身被掛起,而mark word的重量級鎖指標也會被相應修改。
此時,unlock後就需要喚醒被掛起的線程。

轉載請註明原文連結:http://kenwublog.com/theory-of-lightweight-locking-upon-cas

Java輕量級鎖原理詳解(Lightweight Locking)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.