目錄
1 定義生產者
2 定義消費者
3 定義admin介面
4 synchronizedadmin實現
5 reentrantlockadmin實現
6 測試程式
本次生產消費模型分別用synchronized和reentrantlock實現
思路:分為4部分,主程式、生產銷售管理,生產者執行緒,消費者執行緒。
生產銷售管理中有商品陣列,當前庫存量,生產線方法,消費方法,分別在生產者和消費者run函式呼叫
主程式建立管理系統物件,初始化生產者,消費者,啟動執行緒。
class generator implements runnable
public void run()
}}
class consumer implements runnable
public void run()
}}
inte***ce admin
class synchronizedadmin implements admin
//同步鎖實現同步,同步監視器呼叫wait、notify方法實現通訊
public synchronized void generate(string good)
thread.sleep(100);
} catch (interruptedexception e)
goods[goodnum] = good;
goodnum ++;
system.out.println("生產線正在生產第" + goodnum + "個商品,商品名是:" + goods[goodnum - 1]);
//喚醒當前物件池中等待的乙個執行緒。
this.notify();
}public synchronized void consume()
thread.sleep(100);
} catch (interruptedexception e)
system.out.println("正在消費第" + goodnum + "個商品,商品名是:" + goods[goodnum - 1]);
goodnum--;
//喚醒當前物件池中等待的乙個執行緒。
this.notify();
}}
class reentrantlockadmin implements admin
//重入鎖實現同步,condition的await、signal實現通訊
public void generate(string good)
thread.sleep(100);
goods[goodnum] = good;
goodnum ++;
system.out.println("生產線正在生產第" + goodnum + "個商品,商品名是:" + goods[goodnum - 1]);
//喚醒當前物件池中等待的乙個執行緒。
condition.signal();
} catch (interruptedexception e) finally
}public void consume()
thread.sleep(100);
system.out.println("正在消費第" + goodnum + "個商品,商品名是:" + goods[goodnum - 1]);
goodnum --;
//喚醒當前物件池中等待的乙個執行緒。
condition.signal();
} catch (interruptedexception e) finally
}}
public static void main(string args)
Java多執行緒14 生產者 消費者模型
什麼是生產者 消費者模型 一種重要的模型,基於等待 通知機制。生產者 消費者模型描述的是有一塊緩衝區作為倉庫,生產者可將產品放入倉庫,消費者可以從倉庫中取出產品,生產者 消費者模型關注的是以下幾個點 生產者 模型作為一種重要的模型,它的優點在於 利用wait notify 實現生產者 消費者模型 既...
多工實現方式 四 生產者與消費者模型
一種重要的模型,基於等待 通知機制。生產者 消費者模型描述的是有一塊緩衝區作為倉庫,生產者可將產品放入倉庫,消費者可以從倉庫中取出產品。生產者 消費者模型關注的是以下幾個點 1 生產者與消費者不能同時進行工作,形成的是互斥關係 2 生產者與生產者之間不能同時生產,處於互斥關係 3 消費者與消費者之間...
Java多執行緒五 生產者和消費者模型 單個對單個
假如有乙個資源類resouce,其有乙個屬性name屬性和我們賦予的乙個標識為flag屬性。現在通過啟動多執行緒 其實就是兩個執行緒生產線程和消費執行緒 來達到一邊賦值一邊取值列印的效果。public class resourcepublic class productthread implemen...