生產者和消費者模式是多執行緒開發者經常見到的一種模式,生產者用來生產資料,然後將生成的資料放到中間容器,而消費者這是從中間容器中取出資料進行消費處理。消費者和生產者模式可以讓**達到高內聚低耦合的目的。
:#箭頭是提示作用,代表返回得內容是none
global gmoney
while
true
: glock.acquire(
) money=random.randint(0,
100)
gmoney+=money
('%s生產了%d元'
%(threading.current_thread(
).name,gmoney)
) glock.release(
)class
consummer
(threading.thread)
:def
run(self)
->
none
:global gmoney
while
true
: glock.acquire(
) money=random.randint(0,
100)
if gmoney>=money:
gmoney-=money
('%s消費了%d元'
%(threading.current_thread(
).name,money)
)else
('%s想消費%d元,但是餘額只有%d元'
%(threading.current_thread(
).name,money,gmoney)
) glock.release(
)def
main()
:for i in
range(10
):th=producer(name=
'生產者%d號'
%i) th.start(
)for i in
range(10
):th=consummer(name=
'消費者%d號'
:#箭頭是提示作用,代表返回得內容是none
global gmoney
global gtime
while
true
: glock.acquire(
)if gtime>=10:
glock.release(
)break
money=random.randint(0,
100)
gmoney+=money
gtime+=
1print
('%s生產了%d元'
%(threading.current_thread(
).name,gmoney)
) glock.release(
)class
consummer
(threading.thread)
:def
run(self)
->
none
:global gmoney
while
true
: glock.acquire(
) money=random.randint(0,
100)
if gmoney>=money:
gmoney-=money
('%s消費了%d元'
%(threading.current_thread(
).name,money)
)else
:if gtime>=10:
glock.release(
)break
('%s想消費%d元,但是餘額只有%d元'
%(threading.current_thread(
).name,money,gmoney)
) glock.release(
)def
main()
:for i in
range(10
):th=producer(name=
'生產者%d號'
%i) th.start(
)for i in
range(10
):th=consummer(name=
'消費者%d號'
%i) th.start(
)if __name__ ==
'__main__'
: main(
)上述**,生產者生產10次結束,消費者停止消費的條件,生產夠10次或者生產的錢不夠消
Java多執行緒之消費者生產者模式
這個例項應該是學習執行緒的乙個經典例子,生產者和消費者模式。寫的很好,詳細請看內容。author shijin 生產者與消費者模型中,要保證以下幾點 1 同一時間內只能有乙個生產者生產 生產方法加鎖sychronized 2 同一時間內只能有乙個消費者消費 消費方法加鎖sychronized 3 生...
java多執行緒之消費者生產者模式
author shijin 生產者與消費者模型中,要保證以下幾點 1 同一時間內只能有乙個生產者生產 生產方法加鎖sychronized 2 同一時間內只能有乙個消費者消費 消費方法加鎖sychronized 3 生產者生產的同時消費者不能消費 生產方法加鎖sychronized 4 消費者消費的同...
多執行緒之生產者消費者模型
生產者消費者 乙個最簡單的模型。兩個執行緒,乙個生產者,乙個消費者,生產者負責生產,消費者負責消費。分析 同步 生產者生產了之後,消費者進行讀取資料。wait 和notify機制 互斥 生產者生產時,消費者不能進行讀取。鎖機制。public class producerandconsumer cat...