Java之synchronized和Lock的區(qū)別

1蕉斜、Lock是java的一個(gè)interface接口,而synchronized是Java中的關(guān)鍵字,synchronized是由JDK實(shí)現(xiàn)的捶闸,不需要程序員編寫(xiě)代碼去控制加鎖和釋放鹦筹;Lock的接口如下:

public interface Lock {
    void lock();
    void lockInterruptibly() throws InterruptedException;
    boolean tryLock();
    boolean tryLock(long time, TimeUnit unit) throws InterruptedException;
    void unlock();
    Condition newCondition();
}

2铝阐、synchronized修飾的代碼在執(zhí)行異常時(shí),jdk會(huì)自動(dòng)釋放線程占有的鎖铐拐,不需要程序員去控制釋放鎖徘键,因此不會(huì)導(dǎo)致死鎖現(xiàn)象發(fā)生;但是遍蟋,當(dāng)Lock發(fā)生異常時(shí)吹害,如果程序沒(méi)有通過(guò)unLock()去釋放鎖,則很可能造成死鎖現(xiàn)象虚青,因此Lock一般都是在finally塊中釋放鎖它呀;格式如下:

Lock lock = new LockImpl; // new 一個(gè)Lock的實(shí)現(xiàn)類
lock.lock();  // 加鎖
try{
    //todo
}catch(Exception ex){
     // todo
}finally{
    lock.unlock();   //釋放鎖
}

3、Lock可以讓等待鎖的線程響應(yīng)中斷處理,如tryLock(long time, TimeUnit unit)纵穿,而synchronized卻不行烟号,使用synchronized時(shí),等待的線程會(huì)一直等待下去政恍,不能夠中斷汪拥,程序員無(wú)法控制;
4篙耗、synchronized是非公平鎖迫筑,Lock可以設(shè)置是否公平鎖,默認(rèn)是非公平鎖宗弯;
5脯燃、Lock的實(shí)現(xiàn)類ReentrantReadWriteLock提供了readLock()和writeLock()用來(lái)獲取讀鎖和寫(xiě)鎖的兩個(gè)方法,這樣多個(gè)線程可以進(jìn)行同時(shí)讀操作蒙保;
6辕棚、Lock鎖的范圍有局限性,僅適用于代碼塊范圍邓厕,而synchronized可以鎖住代碼塊逝嚎、對(duì)象實(shí)例、類详恼;
7补君、Lock可以綁定條件,實(shí)現(xiàn)分組喚醒需要的線程昧互;synchronized要么隨機(jī)喚醒一個(gè)挽铁,要么喚醒全部線程。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末敞掘,一起剝皮案震驚了整個(gè)濱河市叽掘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌玖雁,老刑警劉巖更扁,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異茄菊,居然都是意外死亡疯潭,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)面殖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)竖哩,“玉大人,你說(shuō)我怎么就攤上這事脊僚∠嗳” “怎么了遵绰?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)增淹。 經(jīng)常有香客問(wèn)我椿访,道長(zhǎng),這世上最難降的妖魔是什么虑润? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任成玫,我火速辦了婚禮,結(jié)果婚禮上拳喻,老公的妹妹穿的比我還像新娘哭当。我一直安慰自己,他們只是感情好冗澈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開(kāi)白布钦勘。 她就那樣靜靜地躺著,像睡著了一般亚亲。 火紅的嫁衣襯著肌膚如雪彻采。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,287評(píng)論 1 301
  • 那天捌归,我揣著相機(jī)與錄音肛响,去河邊找鬼。 笑死陨溅,一個(gè)胖子當(dāng)著我的面吹牛终惑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播门扇,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼偿渡!你這毒婦竟也來(lái)了臼寄?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤溜宽,失蹤者是張志新(化名)和其女友劉穎吉拳,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體适揉,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡留攒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嫉嘀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炼邀。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖剪侮,靈堂內(nèi)的尸體忽然破棺而出拭宁,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布杰标,位于F島的核電站兵怯,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏腔剂。R本人自食惡果不足惜媒区,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望掸犬。 院中可真熱鬧袜漩,春花似錦、人聲如沸登渣。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)胜茧。三九已至粘优,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間呻顽,已是汗流浹背雹顺。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留廊遍,地道東北人嬉愧。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像喉前,于是被迫代替她去往敵國(guó)和親没酣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

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

  • 摘要: 我們已經(jīng)知道卵迂,synchronized 是Java的關(guān)鍵字裕便,是Java的內(nèi)置特性,在JVM層面實(shí)現(xiàn)了對(duì)臨界...
    kingZXY2009閱讀 1,830評(píng)論 0 20
  • 主要相同點(diǎn):Lock能完成synchronized所實(shí)現(xiàn)的所有功能 主要不同點(diǎn):Lock有比synchronize...
    魚(yú)仔_1625閱讀 557評(píng)論 0 0
  • 技術(shù)點(diǎn): 1.線程與進(jìn)程: 在開(kāi)始之前先把進(jìn)程與線程進(jìn)行區(qū)分一下见咒,一個(gè)程序最少需要一個(gè)進(jìn)程偿衰,而一個(gè)進(jìn)程最少需要一個(gè)...
    尼小摩閱讀 7,038評(píng)論 0 31
  • 一、進(jìn)程和線程 進(jìn)程 進(jìn)程就是一個(gè)執(zhí)行中的程序?qū)嵗睦溃總€(gè)進(jìn)程都有自己獨(dú)立的一塊內(nèi)存空間下翎,一個(gè)進(jìn)程中可以有多個(gè)線程。...
    阿敏其人閱讀 2,612評(píng)論 0 13
  • 禹茜茜/文 蕾羹國(guó)國(guó)王柯?tīng)栭g五十歲壽辰之際宝当,宣布大擺國(guó)宴十日视事,每日呈上一百道佳肴,今日是國(guó)宴最后一天今妄。王公貴族們齊...
    禹茜茜閱讀 911評(píng)論 0 0