java中線程wait,notify,notifyall

    有次給客戶寫一個數據庫鏈接池的插件,因爲本人公司的產品是NoSqL數據庫,不能和開源的數據庫鏈接池配合使用,全部只有本身動手寫java

     其中有一個場景是這樣的:多個線程從一個池子裏面拿鏈接,超時時間是5秒,就是wait(5000),再這段時間裏面等到池子喚醒該線程,我纔開始調用datasource對象的notifyAll方法,結果程序測試沒跑多久就掛了。後來改爲notify()就行了。
數據庫

     過了這麼久,我理解是notifyAll喚醒了多有等待的線程,這些線程一旦喚醒就不老實繼續等到5秒結束,notify()只喚醒其中一個線程,那個其餘線程都老老實實的睡着。併發

    

   我這個線程使用jdk5之前的知識,如今讓我從新寫,我會使用java的併發庫,這也是effective java裏面推薦的方式。測試

相關文章
相關標籤/搜索