亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

復(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。

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

相關(guān)文章

  • Java中的2種集合排序方法介紹

    Java中的2種集合排序方法介紹

    這篇文章主要介紹了Java中的2種集合排序方法介紹,本文直接給出代碼,相關(guān)說明請看代碼中的注釋,需要的朋友可以參考下
    2014-10-10
  • Java函數(shù)式編程(六):Optional

    Java函數(shù)式編程(六):Optional

    這篇文章主要介紹了Java函數(shù)式編程(六):Optional,本文是系列文章的第6篇,其它文章請參閱本文底部的相關(guān)文章,需要的朋友可以參考下
    2014-09-09
  • 詳解mybatis plus使用insert沒有返回主鍵的處理

    詳解mybatis plus使用insert沒有返回主鍵的處理

    這篇文章主要介紹了詳解mybatis plus使用insert沒有返回主鍵的處理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Spring Boot部署到Tomcat過程中遇到的問題匯總

    Spring Boot部署到Tomcat過程中遇到的問題匯總

    這篇文章主要給大家分享了關(guān)于Spring Boot部署到Tomcat過程中遇到的一些問題,文中將解決的方法介紹非常詳細,對同樣遇到這個問題的朋友具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-03-03
  • Java實現(xiàn)評論回復(fù)功能的完整步驟

    Java實現(xiàn)評論回復(fù)功能的完整步驟

    這篇文章主要給大家介紹了關(guān)于Java實現(xiàn)評論回復(fù)功能的完整步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • java編程多線程并發(fā)處理實例解析

    java編程多線程并發(fā)處理實例解析

    這篇文章主要介紹了java編程多線程并發(fā)處理實例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • mybatis的if判斷integer問題

    mybatis的if判斷integer問題

    這篇文章主要介紹了mybatis的if判斷integer問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java  文件鎖的簡單實現(xiàn)

    java 文件鎖的簡單實現(xiàn)

    這篇文章主要介紹了java 文件鎖的簡單實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • java實現(xiàn)簡單的爬蟲之今日頭條

    java實現(xiàn)簡單的爬蟲之今日頭條

    最近在學習搜索方面的東西,需要了解網(wǎng)絡(luò)爬蟲方面的知識,雖然有很多開源的強大的爬蟲,但本著學習的態(tài)度,想到之前在做資訊站的時候需要用到爬蟲來獲取一些文章,今天剛好有空就研究了一下.在網(wǎng)上看到了一個demo,使用的是Jsoup,我拿過來修改了一下,有需要的朋友可以參考
    2016-11-11
  • 詳解Java中-classpath和路徑的使用

    詳解Java中-classpath和路徑的使用

    本篇文章主要介紹了Java中-classpath和路徑的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04

最新評論