condition.await和object.wait區(qū)別

1.object.wait()

使用方法:

線(xiàn)程A:

synchronized(obj){

obj.wait(); //此時(shí)當(dāng)前線(xiàn)程釋放obj鎖漆枚,進(jìn)入[等待狀態(tài)]屠列,等待其他線(xiàn)程執(zhí)行obj.notify()時(shí)才有可能執(zhí)行(有可能執(zhí)行的意思可能有多個(gè)線(xiàn)程執(zhí)行了wait)

A do something

}

線(xiàn)程C:

synchronized(obj){

obj.wait(); //此時(shí)當(dāng)前線(xiàn)程釋放obj鎖,進(jìn)入[等待狀態(tài)]蹂随,等待其他線(xiàn)程執(zhí)行obj.notify()時(shí)才有可能執(zhí)行(有可能執(zhí)行的意思可能有多個(gè)線(xiàn)程執(zhí)行了wait)

C do something

}

線(xiàn)程B:

synchronized(obj){

obj.notify(); //此時(shí)當(dāng)前線(xiàn)程釋放obj鎖锹漱,隨機(jī)喚醒一個(gè)處于等待狀態(tài)的線(xiàn)程佩谷,繼續(xù)執(zhí)行wait后面的程序腋逆。

}

假設(shè)三個(gè)線(xiàn)程執(zhí)行順序

線(xiàn)程A-->線(xiàn)程C-->線(xiàn)程B //沒(méi)毛病婿牍,因?yàn)閣ait后是釋放了鎖的

所以問(wèn)題來(lái)了:等待的線(xiàn)程中有A和C, B notify后,只會(huì)喚醒其中一個(gè)執(zhí)行(notifyAll同樣只有一個(gè)執(zhí)行)惩歉;假如我們的需求是想讓A線(xiàn)程執(zhí)行等脂,那么這種object的方式是無(wú)法控制的

2.所以condition來(lái)了

使用方法:注意condition是依賴(lài)ReentrantLock

ReentrantLock lock = new ReentrantLock(true);

Condition aCondition = reentrantLock.newCondition();

Condition cCondition = reentrantLock.newCondition();

線(xiàn)程A:

{

lock.lock();

aCondition.await(); //此時(shí)當(dāng)前線(xiàn)程釋放lock鎖,進(jìn)入[等待狀態(tài)]撑蚌,等待其他線(xiàn)程執(zhí)行aCondition.signal()時(shí)才有可能執(zhí)行

A do something

lock.unlock();

}

線(xiàn)程C:

{

lock.lock();

cCondition.await();

do something

lock.unlock();

}

線(xiàn)程B:

{

lock.lock();

aCondition.signal(); //此時(shí)當(dāng)前線(xiàn)程釋放lock鎖上遥,隨機(jī)喚醒一個(gè)處于等待狀態(tài)等待aCondition的線(xiàn)程,繼續(xù)執(zhí)行await后面的程序争涌。

//cCondition.signal(); ////此時(shí)當(dāng)前線(xiàn)程釋放lock鎖粉楚,隨機(jī)喚醒一個(gè)處于等待狀態(tài)等待cCondition的線(xiàn)程,繼續(xù)執(zhí)行await后面的程序亮垫。

lock.unlock();

}

所以通過(guò)condition與object進(jìn)行線(xiàn)程通信的區(qū)別已經(jīng)很明顯了解幼,condition更加靈活。

個(gè)人理解包警,本質(zhì)上來(lái)講:

多線(xiàn)程環(huán)境的下,線(xiàn)程直接的互斥[執(zhí)行]依靠的應(yīng)該是鎖Lock底靠,線(xiàn)程的之間的[通信]依靠的應(yīng)該是條件Condition/信號(hào)害晦,一般情況下lock確實(shí)可以同時(shí)滿(mǎn)足做這兩個(gè)事情,所以在Object的方式滿(mǎn)足了這個(gè)一般情況,但是肯定會(huì)有復(fù)雜的場(chǎng)景比如剛才例子中壹瘟,需要讓滿(mǎn)足一定條件的線(xiàn)程執(zhí)行鲫剿,僅僅依靠鎖是不能完美解決的。所以condition實(shí)際上分離了執(zhí)行和通信稻轨。

以上僅是condition與object在應(yīng)用層面的上的區(qū)別灵莲,而背后的實(shí)現(xiàn)原理也是大有不同,以后再追加殴俱。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末政冻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子线欲,更是在濱河造成了極大的恐慌明场,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件李丰,死亡現(xiàn)場(chǎng)離奇詭異苦锨,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)趴泌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)舟舒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人嗜憔,你說(shuō)我怎么就攤上這事秃励。” “怎么了痹筛?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵莺治,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我帚稠,道長(zhǎng)谣旁,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任滋早,我火速辦了婚禮榄审,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘杆麸。我一直安慰自己搁进,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布昔头。 她就那樣靜靜地躺著饼问,像睡著了一般。 火紅的嫁衣襯著肌膚如雪揭斧。 梳的紋絲不亂的頭發(fā)上莱革,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼盅视。 笑死捐名,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的闹击。 我是一名探鬼主播镶蹋,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼赏半!你這毒婦竟也來(lái)了贺归?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤除破,失蹤者是張志新(化名)和其女友劉穎牧氮,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體瑰枫,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡踱葛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了光坝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尸诽。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖盯另,靈堂內(nèi)的尸體忽然破棺而出性含,到底是詐尸還是另有隱情,我是刑警寧澤鸳惯,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布商蕴,位于F島的核電站,受9級(jí)特大地震影響芝发,放射性物質(zhì)發(fā)生泄漏绪商。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一辅鲸、第九天 我趴在偏房一處隱蔽的房頂上張望格郁。 院中可真熱鬧,春花似錦独悴、人聲如沸例书。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)决采。三九已至,卻和暖如春坟奥,著一層夾襖步出監(jiān)牢的瞬間树瞭,已是汗流浹背暂幼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留移迫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓管行,卻偏偏與公主長(zhǎng)得像厨埋,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子捐顷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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

  • “最好的設(shè)計(jì)不是只考慮設(shè)計(jì)荡陷,更多的是考慮人⊙镐蹋”
    曾華清閱讀 159評(píng)論 0 0
  • 2017.11.22 大風(fēng) 周四 今晚去接孩子們废赞,走到半路就發(fā)現(xiàn)車(chē)子電不多了,好歹到了托輔叮姑,于...
    宇涵媽閱讀 97評(píng)論 0 0
  • 沈華立 公司:慈溪市創(chuàng)鑫車(chē)輛零部件有限公司 六項(xiàng)精進(jìn)224期利他二組學(xué)員 【日精進(jìn)打卡371】 【知~學(xué)習(xí)】 《六...
    沈華立閱讀 72評(píng)論 0 0
  • 對(duì)不起唉地、謝謝你、請(qǐng)?jiān)彺浮⑽覑?ài)你耘沼。清理、清理朱盐、不斷的清理群嗤。 由于昨天沒(méi)有寫(xiě)回向,承諾接下來(lái)的三天都要寫(xiě)下自己的感恩和...
    抒礫閱讀 265評(píng)論 0 0