生產者消費者

2021-10-25 10:07:08 字數 778 閱讀 3301

生產者執行緒,消費者執行緒

共享資料

object類的等待和喚醒方法

void

wait

()導致當前執行緒等待,直到另乙個賢臣呼叫該物件的notify

()方法或notifyall

()方法

void

notify

()喚醒正在等待物件監視器的單個執行緒

void

notifyall

()喚醒正在等待物件監視器的所有執行緒

包含的類

奶箱類(box):定義乙個成員變數,表示第幾瓶奶,提供儲存牛奶和獲取牛奶的操作

生產者類(produccer):實現runnable介面,重寫run()方法,呼叫儲存牛奶的操作

消費者類(customer):實現runnable介面,重寫run()方法,呼叫獲取牛奶的操作

測試類(boxdemo):裡面有main方法,建立奶箱物件,把奶箱物件作為構造方法引數傳遞,在這個類中呼叫儲存牛奶的方法;建立消費者物件,奶箱物件作為構造方法引數傳遞;建立兩個執行緒物件,分別把生產者物件和消費者物件作為構造方法引數傳遞;啟動執行緒

生產牛奶操作

如果有牛奶等待消費,定義牛奶的狀態

如果沒有牛奶生產牛奶

生產牛奶完畢後,修改奶箱狀態

消費牛奶的操作

如果沒有牛奶,等待生產

如果有牛奶,就消費牛奶

消費完畢後,修改奶箱狀態

wait()需要使用同步關鍵字

喚醒其他等待的執行緒:notifyall()操作

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

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

生產者消費者

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 喚...