synchronized-粗略過程

來源:互聯網
上載者:User

標籤:tps   count   封裝   hot   monit   nbsp   過程   java   set   

JVM書400頁中介紹到在HotSpot虛擬機器,每個對象的對象頭資訊中的“Mark Word”含有鎖標誌位。當對象被synchronized修飾時標誌位為10即重量級鎖。

 

在具體的過程中,每個對象都對應一個ObjectMonitor,獲得鎖即獲得ObjectMonitor對象。(一切皆對象)

ObjectMonitor中有兩個隊列,_WaitSet 和 _EntryList,還有指向持有ObjectMonitor對象的線程的對象_owner。

當多個線程同時訪問一段同步代碼時,線程會被封裝成ObjectWaiter對象,並進入 _EntryList 集合。

當線程擷取到對象的 monitor 後進入 _Owner 地區並把monitor中的owner變數設定為當前線程,同時monitor中的計數器count加1。

若線程調用 wait() 方法,將釋放當前持有的monitor,owner變數恢複為null,count自減1,同時該線程進入  _WaitSet 集合中等待被喚醒。

若當前線程執行完畢也將釋放monitor(鎖)並複位變數的值,以便其他線程進入擷取monitor(鎖)。

 

參考:72828483

synchronized-粗略過程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.