Synchronized關(guān)鍵字颂龙、Lock之間的區(qū)別

Synchronized關(guān)鍵字瓜富、Lock之間的區(qū)別

  • ReentrantLock擁有與Synchronized相同的并發(fā)性和內(nèi)存語義,但是其還多了鎖投票鳍咱、定時(shí)鎖等候中斷鎖等候
    例如: 線程A和B都要獲取對(duì)象O的鎖定,假設(shè)A獲取了對(duì)象O鎖与柑,B將等待A釋放對(duì)O的鎖定谤辜,如果使用 synchronized ,如果A不釋放价捧,B將一直等下去丑念,不能被中斷如果 使用ReentrantLock,如果A不釋放结蟋,可以使B在等待了足夠長的時(shí)間以后脯倚,中斷等待,而干別的事情

ReentrantLock獲取鎖定的三種方式:

1. Lock(),如果獲取了鎖立即返回,如果別的線程持有鎖,當(dāng)前線程則一直處于休眠狀態(tài),直到獲取鎖;
2. tryLock(),如果獲取了鎖立即返回true,如果別的線程正持有鎖,立即返回false;
3. tryLock(long timeout,TimeUnit unit),如果獲取了鎖立即返回true,如果別的線程正持有鎖,會(huì)等待給定參數(shù)的時(shí)間,在等待過程中,如果獲取了鎖,就返回true,如果等待超時(shí),返回false;
lockInterruptibly():如果獲取了鎖定立即返回,如果沒有獲取鎖定,當(dāng)前線程處于休眠狀態(tài),直到獲得鎖定,或者當(dāng)前線程被別的線程中斷
  • synchronized是在JVM層面上實(shí)現(xiàn)的,不但可以通過一些監(jiān)控工具監(jiān)控synchronized的鎖定,而且在代碼執(zhí)行時(shí)出現(xiàn)異常,JVM會(huì)釋放鎖定,但是使用Lock不行,lock是通過代碼實(shí)現(xiàn)的,要保證鎖定一定會(huì)被釋放,就必須將unlock()放到finally{}中

  • 資源競爭不是很激烈的情況下嵌屎,Synchronized的性能要優(yōu)于ReetrantLock推正,但是在資源競爭很激烈的情況下,Synchronized的性能會(huì)下降幾十倍宝惰,但是ReetrantLock的性能能維持常態(tài)舔稀;
    5.0的多線程任務(wù)包對(duì)于同步的性能方面有了很大的改進(jìn),在原有synchronized關(guān)鍵字的基礎(chǔ)上掌测,又增加了ReentrantLock内贮,以及各種Atomic類。了解其性能的優(yōu)劣程度汞斧,有助與我們?cè)谔囟ǖ那樾蜗伦龀稣_的選擇夜郁。


總體的結(jié)論先擺出來:
synchronized:

在資源競爭不是很激烈的情況下,偶爾會(huì)有同步的情形下粘勒,synchronized是很合適的竞端。原因在于,編譯程序通常會(huì)盡可能的進(jìn)行優(yōu)化synchronize庙睡,另外可讀性非常好事富,不管用沒用過5.0多線程包的程序員都能理解技俐。

ReentrantLock:

ReentrantLock提供了多樣化的同步,比如有時(shí)間限制的同步统台,可以被Interrupt的同步(synchronized的同步是不能Interrupt的)等雕擂。在資源競爭不激烈的情形下,性能稍微比synchronized差點(diǎn)點(diǎn)贱勃。但是當(dāng)同步非常激烈的時(shí)候井赌,synchronized的性能一下子能下降好幾十倍。而ReentrantLock確還能維持常態(tài)贵扰。

Atomic:

和上面的類似仇穗,不激烈情況下,性能比synchronized略遜戚绕,而激烈的時(shí)候纹坐,也能維持常態(tài)。激烈的時(shí)候舞丛,Atomic的性能會(huì)優(yōu)于ReentrantLock一倍左右恰画。但是其有一個(gè)缺點(diǎn),就是只能同步一個(gè)值瓷马,一段代碼中只能出現(xiàn)一個(gè)Atomic的變量拴还,多于一個(gè)同步無效。因?yàn)樗荒茉诙鄠€(gè)Atomic之間同步欧聘。

因此:

我們寫同步的時(shí)候片林,優(yōu)先考慮synchronized,如果有特殊需要怀骤,再進(jìn)一步優(yōu)化费封。ReentrantLock和Atomic如果用的不好,不僅不能提高性能蒋伦,還可能帶來災(zāi)難弓摘。

ReentrantLock適用場景

1. 某個(gè)線程在等待一個(gè)鎖的控制權(quán)的這段時(shí)間需要中斷;
2. 需要分開處理一些wait-notify,ReentrantLock里面的Condition應(yīng)用,能夠控制notify哪個(gè)線程,鎖可以綁定多個(gè)條件.
3. 具有公平鎖功能,每個(gè)到來的線程都將排隊(duì)等候.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市痕届,隨后出現(xiàn)的幾起案子韧献,更是在濱河造成了極大的恐慌,老刑警劉巖研叫,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锤窑,死亡現(xiàn)場離奇詭異,居然都是意外死亡嚷炉,警方通過查閱死者的電腦和手機(jī)渊啰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人绘证,你說我怎么就攤上這事隧膏。” “怎么了嚷那?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵胞枕,是天一觀的道長。 經(jīng)常有香客問我车酣,道長,這世上最難降的妖魔是什么索绪? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任湖员,我火速辦了婚禮,結(jié)果婚禮上瑞驱,老公的妹妹穿的比我還像新娘娘摔。我一直安慰自己,他們只是感情好唤反,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布凳寺。 她就那樣靜靜地躺著,像睡著了一般彤侍。 火紅的嫁衣襯著肌膚如雪肠缨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天盏阶,我揣著相機(jī)與錄音晒奕,去河邊找鬼。 笑死名斟,一個(gè)胖子當(dāng)著我的面吹牛脑慧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播砰盐,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼闷袒,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了岩梳?” 一聲冷哼從身側(cè)響起囊骤,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎冀值,沒想到半個(gè)月后淘捡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡池摧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年焦除,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片作彤。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡膘魄,死狀恐怖乌逐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情创葡,我是刑警寧澤浙踢,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站灿渴,受9級(jí)特大地震影響洛波,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜骚露,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一蹬挤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧棘幸,春花似錦焰扳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蹋嵌,卻和暖如春育瓜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背栽烂。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國打工爆雹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人愕鼓。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓钙态,卻偏偏與公主長得像,于是被迫代替她去往敵國和親菇晃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子册倒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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