T626code學習筆記之生產者與消費者

2021-08-04 14:37:38 字數 1149 閱讀 4494

生產者和消費者問題

題目描述:

生產者為商家生產商品,消費者從商家消費商品。

條件:當商家已有產品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...