當多個執行緒併發訪問同乙個資源時,可使用生產者-消費者模式解決,通常有訊號燈法和管程法,本文使用訊號燈法實現,其基本思想為:生產者生產時,消費者等待,生產結束後通知消費者消費;消費者消費時,生產者等待,消費完後通知生產者生產。需要object類中wait()方法和notify()或者notifyall()方法配合使用。
其中,wait()方法使得當前執行緒等待,直到另乙個執行緒呼叫該物件的notify()或者notifyall()方法,wait()方法會釋放鎖資源(sleep 不釋放鎖);notify()或者 notifyall()方法喚醒等待的執行緒 ;wait()、 notify()必須和synchronized一起使用。
例項**如下:flag為true--->生產者生產(play()方法) 消費者等待,生產完成後通知消費者; flag為false--->消費者消費(watch()方法) 生產者等待,消費完後通知生產者
class player implements runnable
@override
public void run() else}}
}class watcher implements runnable
@override
public void run() }}
java多執行緒生產者 消費者模式
1 生產者僅僅在倉儲未滿時候生產,倉滿則停止生產。2 消費者僅僅在倉儲有產品時候才能消費,倉空則等待。3 當消費者發現倉儲沒產品可消費時候會通知生產者生產。4 生產者在生產出可消費產品時候,應該通知等待的消費者去消費 使用object的wait notify 方法 1.wait 當快取區已滿 已空時...
java多執行緒(生產者 消費者)
if isempty 當生產者生產出來商品需要喚醒消費者消費,可進行如下控制 vector.vector.notify 喚醒消費方法還用到了同步的方法,具體語法如下 synchronized vector.vector 程式源 如下 public class thread01 public stat...
java多執行緒實現生產者消費者模式
package cn.learn.test public class waitnotifytest catch interruptedexception e inte ce lock class eatthread implements runnable override public void r...