最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Java多線程notify與notifyall的區(qū)別分析

 更新時(shí)間:2013年05月10日 10:20:21   作者:  
本篇文章對Java中多線程notify與notifyall的區(qū)別進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下

當(dāng)一個(gè)線程進(jìn)入wait之后,就必須等其他線程notify/notifyall,使用notifyall,可以喚醒
所有處于wait狀態(tài)的線程,使其重新進(jìn)入鎖的爭奪隊(duì)列中,而notify只能喚醒一個(gè)。注意,任何時(shí)候只有一個(gè)線程可以獲得鎖,也就是說只有一個(gè)線程可以運(yùn)行synchronized 中的代碼,notifyall只是讓處于wait的線程重新?lián)碛墟i的爭奪權(quán),但是只會有一個(gè)獲得鎖并執(zhí)行。

那么notify和notifyall在效果上又什么實(shí)質(zhì)區(qū)別呢?
主要的效果區(qū)別是notify用得不好容易導(dǎo)致死鎖,例如下面提到的例子。

復(fù)制代碼 代碼如下:

public synchronized void put(Object o) {

    while (buf.size()==MAX_SIZE) {

        wait(); // called if the buffer is full (try/catch removed for brevity)

    }

    buf.add(o);

    notify(); // called in case there are any getters or putters waiting

}

復(fù)制代碼 代碼如下:

public synchronized Object get() {

    // Y: this is where C2 tries to acquire the lock (i.e. at the beginning of the method)

    while (buf.size()==0) {

        wait(); // called if the buffer is empty (try/catch removed for brevity)

        // X: this is where C1 tries to re-acquire the lock (see below)

    }

    Object o = buf.remove(0);

    notify(); // called if there are any getters or putters waiting

    return o;

}

所以除非你非常確定notify沒有問題,大部分情況還是是用notifyall。

更多詳細(xì)的介紹可以參看:
http://stackoverflow.com/questions/37026/java-notify-vs-notifyall-all-over-again

相關(guān)文章

  • Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:考拉茲猜想 Collatz Conjecture

    Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:考拉茲猜想 Collatz Conjecture

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:考拉茲猜想 Collatz Conjecture,本文直接給出實(shí)現(xiàn)代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下
    2015-06-06
  • Java數(shù)據(jù)結(jié)構(gòu)之鏈表(動力節(jié)點(diǎn)之Java學(xué)院整理)

    Java數(shù)據(jù)結(jié)構(gòu)之鏈表(動力節(jié)點(diǎn)之Java學(xué)院整理)

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之鏈表(動力節(jié)點(diǎn)之Java學(xué)院整理)的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Mybatis中動態(tài)SQL,if,where,foreach的使用教程詳解

    Mybatis中動態(tài)SQL,if,where,foreach的使用教程詳解

    MyBatis的動態(tài)SQL是基于OGNL表達(dá)式的,它可以幫助我們方便的在SQL語句中實(shí)現(xiàn)某些邏輯。這篇文章主要介紹了Mybatis中動態(tài)SQL,if,where,foreach的使用教程,需要的朋友可以參考下
    2017-11-11
  • Spring Retry重試框架的使用講解

    Spring Retry重試框架的使用講解

    重試的使用場景比較多,比如調(diào)用遠(yuǎn)程服務(wù)時(shí),由于網(wǎng)絡(luò)或者服務(wù)端響應(yīng)慢導(dǎo)致調(diào)用超時(shí),此時(shí)可以多重試幾次。用定時(shí)任務(wù)也可以實(shí)現(xiàn)重試的效果,但比較麻煩,用Spring Retry的話一個(gè)注解搞定所有,感興趣的可以了解一下
    2023-01-01
  • SpringBoot集成MQTT示例詳解

    SpringBoot集成MQTT示例詳解

    這篇文章主要為大家介紹了SpringBoot集成MQTT示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • IDEA中Services欄不顯示的解決方案小結(jié)

    IDEA中Services欄不顯示的解決方案小結(jié)

    正常編譯完一個(gè)SpringBoot或者SringCloud項(xiàng)目之后,Services都會顯示出你有哪些服務(wù),如果沒有services欄怎么解決呢?下面小編給大家分享IDEA中Services欄不顯示的解決方案小結(jié),感興趣的朋友一起看看吧
    2021-08-08
  • Java 實(shí)戰(zhàn)范例之精美網(wǎng)上音樂平臺的實(shí)現(xiàn)

    Java 實(shí)戰(zhàn)范例之精美網(wǎng)上音樂平臺的實(shí)現(xiàn)

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+vue+Springboot+ssm+mysql+maven+redis實(shí)現(xiàn)一個(gè)前后端分離的精美網(wǎng)上音樂平臺,大家可以在過程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • Java和C語言分別實(shí)現(xiàn)水仙花數(shù)及拓展代碼

    Java和C語言分別實(shí)現(xiàn)水仙花數(shù)及拓展代碼

    這篇文章主要介紹了分別用Java和C語言實(shí)現(xiàn)水仙花數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • java 查詢oracle數(shù)據(jù)庫所有表DatabaseMetaData的用法(詳解)

    java 查詢oracle數(shù)據(jù)庫所有表DatabaseMetaData的用法(詳解)

    下面小編就為大家?guī)硪黄猨ava 查詢oracle數(shù)據(jù)庫所有表DatabaseMetaData的用法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-11-11
  • SpringBoot?@Scheduled?Cron表達(dá)式使用方式

    SpringBoot?@Scheduled?Cron表達(dá)式使用方式

    這篇文章主要介紹了SpringBoot?@Scheduled?Cron表達(dá)式使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03

最新評論

聂拉木县| 措美县| 伊吾县| 宜章县| 民丰县| 宜川县| 临沂市| 田东县| 类乌齐县| 英德市| 沾益县| 林口县| 承德市| 潼南县| 宝清县| 龙陵县| 太原市| 洪江市| 玛多县| 灵台县| 西宁市| 剑川县| 丰镇市| 长沙市| 三门县| 定安县| 瓦房店市| 南宁市| 乌审旗| 新郑市| 巴马| 昌都县| 馆陶县| 忻州市| 泰顺县| 台州市| 政和县| 栖霞市| 泗阳县| 长宁区| 南皮县|