JAVA那些事--鎖機制

互斥同步之鎖機制

互斥同步是保證線程安全的一種手段逞壁,在Java中提供了兩種鎖機制來實現(xiàn)

  • 同步鎖synchronized
  • Reentrant鎖

鎖機制雖然能有效地保證線程安全流济,但是其也存在問題:當線程因為請求鎖進入阻塞或者等待被喚醒時,會給降低系統(tǒng)的性能腌闯。這是由于Java的線程實現(xiàn)是跟操作系統(tǒng)的線程綁定的,如果需要阻塞或者喚醒一個線程時雕憔,就需要用戶態(tài)和內(nèi)核態(tài)之間來回切換姿骏,應用在操作系統(tǒng)上的這種狀態(tài)切換是很耗費CPU時間的,所以有可能對于非常簡單的同步代碼塊斤彼,系統(tǒng)用于狀態(tài)切換的時間要比執(zhí)行同步代碼的時間要長分瘦。所以鎖機制的優(yōu)化的目標就是盡可能降低線程進入阻塞/等待喚醒的概率,相關(guān)的技術(shù)有:

  • 偏向鎖
  • 輕量鎖
  • 傳統(tǒng)鎖
  1. 同步鎖和Reentrant鎖的比較
比較項 同步鎖 Reetrant鎖
是否可重入
是否等待可中斷
是否公平鎖
是否可鎖定多個條件 鎖定一個 鎖定多個
  1. 鎖的狀態(tài)轉(zhuǎn)換
鎖的狀態(tài)轉(zhuǎn)化.jpg

偏向鎖和輕量級鎖帶來的優(yōu)化的前提是假設(shè)多線程在鎖對象的同步周期內(nèi)都不存在競爭嘲玫;

在Java中鎖的狀態(tài)切換順序為偏向鎖-->輕量級鎖-->重量級鎖(傳統(tǒng)鎖)

當程序中雖然寫了同步的代碼,但是實際上每次只有一個線程在請求鎖并扇,鎖對象處于偏向鎖去团;

當出現(xiàn)另外一個線程再請求鎖時,鎖對象就由偏向鎖轉(zhuǎn)為輕量鎖穷蛹。

如果每次都是一個線程獲取鎖土陪,執(zhí)行完同步代碼塊,釋放鎖后才有另一個線程來請求鎖肴熏,則鎖對象會一直處于輕量鎖鬼雀;

如果在某一時刻出現(xiàn)至少兩個線程同時請求一把鎖時,鎖對象就由輕量鎖升級為重量級鎖蛙吏。

詳細的實現(xiàn)機制請參考:
http://luojinping.com/2015/07/09/java%E9%94%81%E4%BC%98%E5%8C%96/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末源哩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鸦做,更是在濱河造成了極大的恐慌励烦,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件馁龟,死亡現(xiàn)場離奇詭異崩侠,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門却音,熙熙樓的掌柜王于貴愁眉苦臉地迎上來改抡,“玉大人,你說我怎么就攤上這事系瓢“⑾耍” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵夷陋,是天一觀的道長欠拾。 經(jīng)常有香客問我,道長骗绕,這世上最難降的妖魔是什么藐窄? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮酬土,結(jié)果婚禮上荆忍,老公的妹妹穿的比我還像新娘。我一直安慰自己撤缴,他們只是感情好刹枉,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著屈呕,像睡著了一般微宝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上虎眨,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天蟋软,我揣著相機與錄音,去河邊找鬼专甩。 笑死钟鸵,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的涤躲。 我是一名探鬼主播棺耍,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼种樱!你這毒婦竟也來了蒙袍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤嫩挤,失蹤者是張志新(化名)和其女友劉穎害幅,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體岂昭,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡以现,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片邑遏。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡佣赖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出记盒,到底是詐尸還是另有隱情憎蛤,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布纪吮,位于F島的核電站俩檬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏碾盟。R本人自食惡果不足惜棚辽,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望巷疼。 院中可真熱鬧晚胡,春花似錦、人聲如沸嚼沿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽骡尽。三九已至,卻和暖如春擅编,著一層夾襖步出監(jiān)牢的瞬間攀细,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工爱态, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留谭贪,地道東北人。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓锦担,卻偏偏與公主長得像俭识,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子洞渔,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

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