可重入鎖(ReentrantLock)淺析

ReentrantLock模型分類

可重入鎖(ReentrantLock)有兩種獲取鎖的模型瓦糕,一種是公平鎖种远,另一種是非公平鎖蜜徽,區(qū)別在于當(dāng)前線程擁有鎖之后祝懂,再次請求獲取鎖時,是否需要再次競爭鎖資源

公平鎖

初始化時娜汁,公平鎖內(nèi)部計數(shù)器(volatile int state)計0嫂易,無進(jìn)程占有鎖資源兄朋。

當(dāng)線程A請求鎖資源時掐禁,將 state + 1,此時state = 1,線程A占有鎖資源颅和。

此時有線程B請求鎖資源傅事,因鎖內(nèi)部計數(shù)器不為0,無可用資源峡扩,線程B進(jìn)入等待隊列等待鎖資源的釋放蹭越。

此時線程A再次請求鎖資源,再次將 state + 1教届,state = 2 响鹃,線程A仍然占有鎖資源,線程B(其他線程)仍在等待隊列等待鎖資源的釋放案训。

線程A每次釋放鎖資源买置,只會將計數(shù)器的值減一,即 state - 1 强霎,只有當(dāng)state = 0 時忿项,鎖資源才全部釋放,此時鎖會通知隊列喚醒線程B節(jié)點城舞,線程B才能進(jìn)行鎖資源競爭轩触,此時若有線程C在隊列中,C線程繼續(xù)休眠家夺,只有當(dāng)線程B執(zhí)行結(jié)束脱柱,C才會被喚醒

當(dāng)線程B獲取鎖資源后,線程A若再次請求鎖資源拉馋,則需要通過鎖資源競爭榨为,且鎖資源不被占用掸茅。


非公平鎖

非公平鎖和公平鎖最大的區(qū)別在于,當(dāng)線程A執(zhí)行完后柠逞,鎖資源釋放昧狮,等待隊列中有線程B,在喚醒線程B的過程中板壮,若出現(xiàn)線程C請求鎖逗鸣,則線程C有很大機(jī)會獲取該鎖,一旦線程C擁有鎖绰精,則線程B繼續(xù)休眠


ReenTrantLock獨有的能力

1.??????ReenTrantLock可以指定是公平鎖還是非公平鎖撒璧。而synchronized只能是非公平鎖。所謂的公平鎖就是先等待的線程先獲得鎖笨使。ReentrantLock默認(rèn)的構(gòu)造函數(shù)是創(chuàng)建的非公平鎖卿樱,可以通過參數(shù)true設(shè)為公平鎖。

2.??????ReenTrantLock提供了一個Condition(條件)類硫椰,用來實現(xiàn)分組喚醒需要喚醒的線程們繁调,即可以綁定多個線程,而不是像synchronized要么隨機(jī)喚醒一個線程要么喚醒全部線程靶草。

3.??????ReenTrantLock提供了一種能夠中斷等待鎖的線程的機(jī)制蹄胰,通過lock.lockInterruptibly()來實現(xiàn)這個機(jī)制。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奕翔,一起剝皮案震驚了整個濱河市裕寨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌派继,老刑警劉巖宾袜,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異驾窟,居然都是意外死亡庆猫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門纫普,熙熙樓的掌柜王于貴愁眉苦臉地迎上來阅悍,“玉大人,你說我怎么就攤上這事昨稼〗谑樱” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵假栓,是天一觀的道長寻行。 經(jīng)常有香客問我,道長匾荆,這世上最難降的妖魔是什么拌蜘? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任杆烁,我火速辦了婚禮,結(jié)果婚禮上简卧,老公的妹妹穿的比我還像新娘兔魂。我一直安慰自己,他們只是感情好举娩,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布析校。 她就那樣靜靜地躺著,像睡著了一般铜涉。 火紅的嫁衣襯著肌膚如雪智玻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天芙代,我揣著相機(jī)與錄音吊奢,去河邊找鬼。 笑死纹烹,一個胖子當(dāng)著我的面吹牛页滚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播滔韵,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼逻谦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了陪蜻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤贱鼻,失蹤者是張志新(化名)和其女友劉穎宴卖,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體邻悬,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡症昏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了父丰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肝谭。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蛾扇,靈堂內(nèi)的尸體忽然破棺而出攘烛,到底是詐尸還是另有隱情,我是刑警寧澤镀首,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布坟漱,位于F島的核電站,受9級特大地震影響更哄,放射性物質(zhì)發(fā)生泄漏芋齿。R本人自食惡果不足惜腥寇,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望觅捆。 院中可真熱鬧赦役,春花似錦、人聲如沸栅炒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽职辅。三九已至棒呛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間域携,已是汗流浹背簇秒。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留秀鞭,地道東北人趋观。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像锋边,于是被迫代替她去往敵國和親皱坛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

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