關(guān)于可重入鎖的原理及簡單實(shí)現(xiàn)

關(guān)于并發(fā)包當(dāng)中的ReenTrantLock 的實(shí)現(xiàn)等我研究完ConcurrentHashMap 之后再看看

可重入鎖使用的目的:

? ? ? ? 保證線程訪問時的線程安全薇正;

與普通鎖的區(qū)別:

? ? ? ? 可重入鎖可以避免線程死鎖


場景描述:多線程訪問場景,其中獲得了鎖的線程可能重復(fù)獲得鎖? ?

即:? Thread1? --->lock? ? ?Thread2 ---> wait()? ?Thread3 ----> wait()? ? ?Thread4 ---> wait()? ?

? ? ? ? ?Thread1 ---->lock? (重復(fù)加鎖? 如果解鎖過程只有一次 則造成死鎖)??


public? class? Lock{

? ? ? ? boolean? isLocked? =? false;

? ? ? ? Thread? lockBy? =? null? ;

? ? ? ? ?int? ?lockCount? =? 0;

? ? ? ? ?public? synchronized? void? lock ()? {? ? ? ? ? ? ? ? ////////加鎖方式

? ? ? ? ? ? ? ? Thread? thread? =? Thread.currentThread();

? ? ? ? ? ? ? ? while(? isLocked? &&? lockBy != thread ){

? ? ? ? ? ? ? ? ? ? ? ? ? ? wait () ;

?????????????????}

? ? ? ? ? ? ? ? isLocked = true ;

? ? ? ? ? ? ? ? lockCount ++ ;

? ? ? ? ? ? ? ? lockBy = thread;?

? ? ? ?}?


? ? ? ?public? synchronized? void? unlock () {

? ? ? ? ? ? ? ?if ( Thread . currentThread (? )? == this . lockBy )? {

? ? ? ? ? ? ? ? ? ? ? ? lockCount --;? ? ? ? ? ? ? ? ? //////////? 防止出現(xiàn)獲得了鎖的線程雙重加鎖后? ?卻只解鎖一遍? 造成死鎖

? ? ? ? ? ? ? ? ? ? ? ? if ( lockCount == 0 ) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? isLocked? =? false ;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? notify();

????????????????????????}????

? ? ? ? ? ? ? ? }

????????}


}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泻仙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子番官,更是在濱河造成了極大的恐慌位衩,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件琼讽,死亡現(xiàn)場離奇詭異必峰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)钻蹬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門吼蚁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人问欠,你說我怎么就攤上這事肝匆。” “怎么了顺献?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵旗国,是天一觀的道長。 經(jīng)常有香客問我注整,道長能曾,這世上最難降的妖魔是什么嫁怀? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮借浊,結(jié)果婚禮上塘淑,老公的妹妹穿的比我還像新娘。我一直安慰自己蚂斤,他們只是感情好存捺,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著曙蒸,像睡著了一般捌治。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上纽窟,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天肖油,我揣著相機(jī)與錄音,去河邊找鬼臂港。 笑死森枪,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的审孽。 我是一名探鬼主播县袱,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼佑力!你這毒婦竟也來了式散?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤打颤,失蹤者是張志新(化名)和其女友劉穎暴拄,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體编饺,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乖篷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了反肋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片那伐。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖石蔗,靈堂內(nèi)的尸體忽然破棺而出罕邀,到底是詐尸還是另有隱情,我是刑警寧澤养距,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布诉探,位于F島的核電站,受9級特大地震影響棍厌,放射性物質(zhì)發(fā)生泄漏肾胯。R本人自食惡果不足惜竖席,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望敬肚。 院中可真熱鬧毕荐,春花似錦、人聲如沸艳馒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽弄慰。三九已至第美,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間陆爽,已是汗流浹背什往。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留慌闭,地道東北人别威。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像贡必,于是被迫代替她去往敵國和親兔港。 傳聞我的和親對象是個殘疾皇子庸毫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

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

  • 原文鏈接:深入剖析基于并發(fā)AQS的(獨(dú)占鎖)重入鎖(ReetrantLock)及其Condition實(shí)現(xiàn)原理 - ...
    Walter_Hu閱讀 1,957評論 0 12
  • 1.解決信號量丟失和假喚醒 public class MyWaitNotify3{ MonitorObject m...
    Q羅閱讀 873評論 0 1
  • 進(jìn)程和線程 進(jìn)程 所有運(yùn)行中的任務(wù)通常對應(yīng)一個進(jìn)程,當(dāng)一個程序進(jìn)入內(nèi)存運(yùn)行時,即變成一個進(jìn)程.進(jìn)程是處于運(yùn)行過程中...
    勝浩_ae28閱讀 5,089評論 0 23
  • “看來要想改她的程序仔拟,只有黑進(jìn)她的主機(jī)里去了!” 賈寶玉吃完早餐就開著車到學(xué)校去了飒赃,今天早到利花,可以不用再交錢停車,...
    可可豆子閱讀 255評論 0 5
  • 文|方嘉一 獻(xiàn)給大姨载佳。 聽聞大姨病重炒事,回想過往人生匆匆寫下此文,不成想當(dāng)天夜里就天人永隔蔫慧。今日大姨入土安葬挠乳,愿天堂...
    方嘉一閱讀 940評論 2 15