經典例題 生產者 消費者

2021-10-25 15:16:18 字數 1087 閱讀 9191

package com.day0207_2;

/** * 執行緒通訊的應用:經典例題:生產者/消費者

* * 生產者(productor)將產品交給店員(clerk),而消費者(customer)從店員處取走產品,

* 會叫生產者停一下,如果店中有空位放產品了再通知生產者繼續生產;如果店中沒有產品

* 了,店員會告訴消費者等一下,如果店中有產品了再通知消費者來取走產品。

* * 分析:

* 1.是否為多執行緒問題?是,生產者執行緒、消費者執行緒

* 2.是否有各項資料?是,店員(或產品)

* 3.如何解決執行緒的安全問題?同步機制,有三種方法

* 4.是否涉及到執行緒的通訊?是

* **/class

clerk

else

catch

(interruptedexception e)}}

//消費產品

public

synchronized

void

consumeproduct()

else

catch

(interruptedexception e)}}

}class

producer

extends

thread

@override

public

void

run(

)catch

(interruptedexception e)

clerk.

produceproduct()

;}}}

class

consumer

extends

thread

@override

public

void

run(

)catch

(interruptedexception e)

clerk.

consumeproduct()

;}}}

public

class

producttest

}

生產者消費者 生產者與消費者模式

一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...

生產者消費者

using system using system.collections.generic using system.threading namespace gmservice foreach thread thread in producers q.exit console.read public...

生產者消費者

執行緒通訊 乙個執行緒完成了自己的任務時,要通知另外乙個執行緒去完成另外乙個任務.wait 等待 如果執行緒執行了wait方法,那麼該執行緒會進入等待的狀態,等待狀態下的執行緒必須要被其他執行緒呼叫notify方法才能喚醒。notify 喚醒 喚醒執行緒池等待執行緒其中的乙個。notifyall 喚...