**類
public
class
tmail
catch
(interruptedexception e)
} count++
; system.out.
println
(thread.
currentthread()
.getname()
+" 生產者生產,當前庫存為:"
+count)
;notifyall()
;}//消費者消費產品
public
synchronized
void
take()
catch
(interruptedexception e)
} count--
; system.out.
println
(thread.
currentthread()
.getname()
+" 消費者消費,當前庫存為:"
+count)
;notifyall()
;}}
以上**類,表明商品數量count和最大商品數量。
當生產的商品達到最大商品數量後,生產者將停止生產。
當消費的商品為零後,消費者將停止消費。
當生產者開始生產,喚醒所有正在等待的消費者。
當消費者開始消費,喚醒所有正在等待的生產者。
以上涉及到了while 和 if 修飾wait的問題
如果使用 if 修飾wait 那麼執行緒被喚醒後,將繼續執行wait 後面的內容,不會再次進行判斷。
如果使用while修飾,那麼執行緒被喚醒後,將會繼續判斷是否滿足條件
生產者類
class
pushtarget
implements
runnable
@override
public
void
run(
)catch
(interruptedexception e)}}
}
消費者類
class
taketarget
implements
runnable
@override
public
void
run(
)catch
(interruptedexception e)}}
}
測試類
public
class
maintest
}
redis stream 實現生產者消費者模式
test public void producer throws interruptedexception test public void consumer1 throws interruptedexception list msg jedis.xreadgroup groupname,consu...
生產者消費者 生產者與消費者模式
一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...
生產者消費者
using system using system.collections.generic using system.threading namespace gmservice foreach thread thread in producers q.exit console.read public...