Java鎖升級(jí)過(guò)程

一、鎖種類

偏向鎖

因?yàn)榻?jīng)過(guò)HotSpot的作者大量的研究發(fā)現(xiàn)叨吮,大多數(shù)時(shí)候是不存在鎖競(jìng)爭(zhēng)的形纺,常常是一個(gè)線程多次獲得同一個(gè)鎖,因此如果每次都要競(jìng)爭(zhēng)鎖會(huì)增大很多沒(méi)有必要付出的代價(jià)危彩,為了降低獲取鎖的代價(jià)攒磨,才引入的偏向鎖。

輕量級(jí)鎖

輕量級(jí)鎖考慮的是競(jìng)爭(zhēng)鎖對(duì)象的線程不多汤徽,而且線程持有鎖的時(shí)間也不長(zhǎng)的情景娩缰。因?yàn)樽枞€程需要CPU從用戶態(tài)轉(zhuǎn)到內(nèi)核態(tài)抒抬,代價(jià)較大朦拖,如果剛剛阻塞不久這個(gè)鎖就被釋放了走净,那這個(gè)代價(jià)就有點(diǎn)得不償失了桦沉,因此這個(gè)時(shí)候就干脆不阻塞這個(gè)線程嘴秸,讓它自旋這等待鎖釋放劲弦。

自旋鎖

減少線程上下文切換置尔,提高執(zhí)行效率

重量級(jí)鎖

除擁有鎖的線程外阻塞所有競(jìng)爭(zhēng)線程

二妄讯、具體過(guò)程

線程A在進(jìn)入同步代碼塊前趋惨,先檢查MarkWord中的線程ID是否與當(dāng)前線程ID一致鸟顺,如果一致(還是線程A獲取鎖對(duì)象),則無(wú)需使用CAS來(lái)加鎖器虾、解鎖讯嫂。

如果不一致,再檢查是否為偏向鎖兆沙,如果不是欧芽,則自旋等待鎖釋放。

如果是葛圃,再檢查該線程是否存在(偏向鎖不會(huì)主動(dòng)釋放鎖)千扔,如果不在,則設(shè)置線程ID為線程A的ID库正,此時(shí)依然是偏向鎖曲楚。

如果還在,則暫停該線程褥符,同時(shí)將鎖標(biāo)志位設(shè)置為00即輕量級(jí)鎖(將MarkWord復(fù)制到該線程的棧幀中并將MarkWord設(shè)置為棧幀中鎖記錄)龙誊。線程A自旋等待鎖釋放。

如果自旋次數(shù)到了該線程還沒(méi)有釋放鎖喷楣,或者該線程還在執(zhí)行趟大,線程A還在自旋等待鹤树,這時(shí)又有一個(gè)線程B過(guò)來(lái)競(jìng)爭(zhēng)這個(gè)鎖對(duì)象,那么這個(gè)時(shí)候輕量級(jí)鎖就會(huì)膨脹為重量級(jí)鎖护昧。重量級(jí)鎖把除了擁有鎖的線程都阻塞魂迄,防止CPU空轉(zhuǎn)。

如果該線程釋放鎖惋耙,則會(huì)喚醒所有阻塞線程捣炬,重新競(jìng)爭(zhēng)鎖。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绽榛,一起剝皮案震驚了整個(gè)濱河市湿酸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌灭美,老刑警劉巖推溃,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異届腐,居然都是意外死亡铁坎,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門犁苏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)硬萍,“玉大人,你說(shuō)我怎么就攤上這事围详∑庸裕” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵助赞,是天一觀的道長(zhǎng)买羞。 經(jīng)常有香客問(wèn)我,道長(zhǎng)雹食,這世上最難降的妖魔是什么畜普? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮群叶,結(jié)果婚禮上漠嵌,老公的妹妹穿的比我還像新娘。我一直安慰自己盖呼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布化撕。 她就那樣靜靜地躺著几晤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪植阴。 梳的紋絲不亂的頭發(fā)上蟹瘾,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天圾浅,我揣著相機(jī)與錄音,去河邊找鬼憾朴。 笑死狸捕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的众雷。 我是一名探鬼主播灸拍,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼砾省!你這毒婦竟也來(lái)了鸡岗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤编兄,失蹤者是張志新(化名)和其女友劉穎轩性,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狠鸳,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡揣苏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了件舵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卸察。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖芦圾,靈堂內(nèi)的尸體忽然破棺而出蛾派,到底是詐尸還是另有隱情,我是刑警寧澤个少,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布洪乍,位于F島的核電站,受9級(jí)特大地震影響夜焦,放射性物質(zhì)發(fā)生泄漏壳澳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一茫经、第九天 我趴在偏房一處隱蔽的房頂上張望巷波。 院中可真熱鬧,春花似錦卸伞、人聲如沸抹镊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)垮耳。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間终佛,已是汗流浹背俊嗽。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留铃彰,地道東北人绍豁。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像牙捉,于是被迫代替她去往敵國(guó)和親竹揍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容