多執行緒之生產者和消費者模式

2021-10-02 04:02:41 字數 3178 閱讀 7701

生產者和消費者模式是多執行緒開發者經常見到的一種模式,生產者用來生產資料,然後將生成的資料放到中間容器,而消費者這是從中間容器中取出資料進行消費處理。消費者和生產者模式可以讓**達到高內聚低耦合的目的。

:#箭頭是提示作用,代表返回得內容是none

global gmoney

while

true

: glock.acquire(

) money=random.randint(0,

100)

gmoney+=money

print

('%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

print

('%s消費了%d元'

%(threading.current_thread(

).name,money)

)else

:print

('%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

print

('%s消費了%d元'

%(threading.current_thread(

).name,money)

)else

:if gtime>=10:

glock.release(

)break

print

('%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...