生產者和消費者問題
題目描述:
生產者為商家生產商品,消費者從商家消費商品。
條件:當商家已有產品50件時,生產者停止生產,停止給商家供貨;
當商家貨存小於等於零時停止為消費者提供商品消費。
分析:1.是否是多執行緒問題? 是。生產者(producer)消費者(customer)。
3.是否涉及執行緒通訊?存在生產者和消費者的通訊(wait()/notify()/notifyall())。
用**實現如下:
class shop catch (interruptedexception e)
}else
}public synchronized void customerproducer() catch (interruptedexception e)
}else}}
class customer implements runnable
@override
public void run() catch (interruptedexception e)
shop.customerproducer(); }}
}class producer implements runnable
@override
public void run() catch (interruptedexception e)
shop.addproducer();}}
}public class producercustomer
}執行結果:
生產者開始生產產品
生產者開始生產產品
消費者消費產品
生產者1生產了第1個產品
生產者2生產了第2個產品
消費者1消費了第2個產品
生產者1生產了第2個產品
生產者2生產了第3個產品
消費者1消費了第3個產品
生產者1生產了第3個產品
消費者1消費了第3個產品
生產者2生產了第3個產品
消費者1消費了第3個產品
生產者1生產了第3個產品
生產者2生產了第4個產品
生產者1生產了第5個產品
消費者1消費了第5個產品
生產者2生產了第5個產品
@t626code的學習筆記
生產者 消費者問題學習筆記
問題描述 有乙個或多個生產者生產出某種型別的資料,並將其放置在快取區中 有乙個消費者從快取區中取資料,每次取一項 在任何時刻只有乙個消費者或者生產者可以訪問快取區 當快取區已滿時,生產者不會繼續向其中新增資料 當快取區為空時,消費者不會從中移走資料。1 使用二元訊號量解決無限緩衝區生產者 消費者問題...
OS學習筆記 生產者消費者問題
緩衝池是臨界資源,因此需要為其設定乙個互斥訊號量mutex。此外,為了讓生產者和消費者都能正確使用空 滿緩衝區,還需要設定兩個資源訊號量empty和full,empty和full的初值分別為n和0.在程序選擇緩衝區時,還需要使用兩個特殊指標in和out,分別指向生產者使用的空緩衝區和消費者使用的滿緩...
阻塞佇列之生產者與消費者
前段時間因為專案中對生產者與消費者的需求,故整理了一下對阻塞佇列。不說了,直接上 public class blockingqueuetest public void run catch interruptedexception e public void shutdown 消費者 public s...