日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如何實(shí)現(xiàn)Java鎖升級(jí)-創(chuàng)新互聯(lián)

這篇文章主要講解了如何實(shí)現(xiàn)Java鎖升級(jí),內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

網(wǎng)站制作、網(wǎng)站建設(shè)介紹好的網(wǎng)站是理念、設(shè)計(jì)和技術(shù)的結(jié)合。創(chuàng)新互聯(lián)擁有的網(wǎng)站設(shè)計(jì)理念、多方位的設(shè)計(jì)風(fēng)格、經(jīng)驗(yàn)豐富的設(shè)計(jì)團(tuán)隊(duì)。提供PC端+手機(jī)端網(wǎng)站建設(shè),用營(yíng)銷思維進(jìn)行網(wǎng)站設(shè)計(jì)、采用先進(jìn)技術(shù)開源代碼、注重用戶體驗(yàn)與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。

對(duì)象內(nèi)存布局

Java對(duì)象在內(nèi)存中存儲(chǔ)的布局可以分為3塊區(qū)域: 對(duì)象頭、實(shí)例數(shù)據(jù)、對(duì)齊填充。

對(duì)象頭,分為兩個(gè)部分,第一個(gè)部分存儲(chǔ)對(duì)象自身的運(yùn)行時(shí)數(shù)據(jù),又稱為Mark Word,32位虛擬機(jī)占32bit,64位虛擬機(jī)占64bit。如圖所示,不同鎖狀態(tài)下,Mark Word的結(jié)構(gòu),理解下面要介紹的各種鎖,和鎖升級(jí)過程,都需要先充分了解Mark Word的結(jié)構(gòu)。

第二部分是類型指針,指向類元數(shù)據(jù)指針,虛擬機(jī)通過此指針,確定該對(duì)象屬于那個(gè)類的實(shí)例。

如何實(shí)現(xiàn)Java鎖升級(jí)

輕量級(jí)鎖

輕量級(jí)鎖是相對(duì)于重量級(jí)鎖(Synchrnoized)而言的,本意是在沒有多線程競(jìng)爭(zhēng)的前提下,減少傳統(tǒng)的重量級(jí)鎖使用操作系統(tǒng)互斥量產(chǎn)生的性能消耗。

輕量級(jí)鎖的獲取

線程進(jìn)入同步塊時(shí),如果此同步對(duì)象沒有被鎖定(即鎖標(biāo)志位為01,是否為偏向鎖為0),虛擬機(jī)在當(dāng)前線程的棧幀中建立一個(gè)名為鎖記錄(Lock Record)的空間,用于存儲(chǔ)鎖對(duì)象目前的一個(gè)Mark Word的copy

如何實(shí)現(xiàn)Java鎖升級(jí)

然后虛擬機(jī)使用CAS操作,嘗試將Mark World更新為指向Lock Record的指針,如果更新成功,那么線程擁有了該對(duì)象的鎖,并且將鎖標(biāo)志位置位00,如圖所示

如何實(shí)現(xiàn)Java鎖升級(jí)

一旦有兩條以上的線程搶占該鎖,輕量級(jí)鎖會(huì)升級(jí)為重量級(jí)鎖。鎖標(biāo)志位置為10,Mark Word存儲(chǔ)的就是指向重量級(jí)鎖的指針

輕量級(jí)鎖釋

  • 放如果對(duì)象的Mark Word仍然指向著線程的鎖記錄, 那就用CAS操作把對(duì)象當(dāng)前的Mark Word和線程中復(fù)制的Displaced Mark Word替換回來, 如果替換成功, 整個(gè)同步過程就完成了。
  • 如果替換失敗, 說明有其他線程嘗試過獲取該鎖,輕量級(jí)鎖膨脹為重量級(jí)鎖,那就要在釋放鎖的同時(shí), 喚醒被掛起的線程。

偏向鎖

引入偏向鎖的目的是在沒有多線程競(jìng)爭(zhēng)的前提下,進(jìn)一步減少線程同步的性能消耗。

偏向鎖的獲取

開啟偏向鎖模式后,鎖第一次被線程獲取的時(shí)候,虛擬機(jī)會(huì)把對(duì)象頭中是否為偏向鎖的標(biāo)志位設(shè)位0,同時(shí)使用CAS操作把獲取到這個(gè)鎖的線程的ID記錄在對(duì)象的Mark Word之中。

當(dāng)有另外一個(gè)線程去嘗試獲取這個(gè)鎖時(shí), 偏向模式就宣告結(jié)束。 根據(jù)鎖對(duì)象目前是否處于被鎖定的狀態(tài), 撤銷偏向( Revoke Bias) 后恢復(fù)到未鎖定( 標(biāo)志位為“01”)或輕量級(jí)鎖定( 標(biāo)志位為“00”) 的狀態(tài)

偏向鎖的釋放

偏向鎖,并沒有顯式的鎖釋放過程,主要依靠鎖的批量再偏向(Bulk Rebias)機(jī)制實(shí)現(xiàn)鎖釋放。

該機(jī)制的主要工作原理如下:

  • 引入一個(gè)概念 epoch, 其本質(zhì)是一個(gè)時(shí)間戳 , 代表了偏向鎖的有效性,從前文描述的對(duì)象頭結(jié)構(gòu)中可以看到, epoch 存儲(chǔ)在可偏向?qū)ο蟮?MarkWord 中。
  • 除了對(duì)象中的 epoch, 對(duì)象所屬的類 class 信息中, 也會(huì)保存一個(gè) epoch 值,每當(dāng)遇到一個(gè)全局安全點(diǎn)時(shí), 如果要對(duì) class 進(jìn)行批量再偏向, 則首先對(duì) class 中保存的 epoch 進(jìn)行增加操作, 得到一個(gè)新的 epoch_new
  • 然后掃描所有持有 class 實(shí)例的線程棧,根據(jù)線程棧的信息判斷出該線程是否鎖定了該對(duì)象, 僅將epoch_new 的值賦給被鎖定的對(duì)象中。
  • 退出安全點(diǎn)后, 當(dāng)有線程需要嘗試獲取偏向鎖時(shí), 直接檢查 class中存儲(chǔ)的 epoch 值是否與目標(biāo)對(duì)象中存儲(chǔ)的 epoch 值相等,如果不相等, 則說明該對(duì)象的偏向鎖已經(jīng)無效了, 可以嘗試對(duì)此對(duì)象重新進(jìn)行偏向操作。
     

整個(gè)鎖升級(jí)過程

如何實(shí)現(xiàn)Java鎖升級(jí)

看完上述內(nèi)容,是不是對(duì)如何實(shí)現(xiàn)Java鎖升級(jí)有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


網(wǎng)頁(yè)題目:如何實(shí)現(xiàn)Java鎖升級(jí)-創(chuàng)新互聯(lián)
標(biāo)題來源:http://www.dlmjj.cn/article/gcdej.html