生產者消費者

浪漫攻城獅莉小妖發表於2020-11-16

生產者消費者

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

共享資料

Object類的等待和喚醒方法

void wait()導致當前執行緒等待,直到另一個賢臣呼叫該物件的notify()方法或notifyAll()方法
void notify()喚醒正在等待物件監視器的單個執行緒
void notifyAll()喚醒正在等待物件監視器的所有執行緒

包含的類

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

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

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

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

生產牛奶操作

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

如果沒有牛奶生產牛奶

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

消費牛奶的操作

如果沒有牛奶,等待生產

如果有牛奶,就消費牛奶

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

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

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

相關文章