[問題] 多執行續的消費者和生產者

作者: obelisk0114 (追風箏的孩子)   2018-10-14 07:41:59
生產者每秒可以生產一樣產品 (product),
消費者每秒消費 0, 1, 2..., m 樣產品 (order)
若生產者來不及生產, 消費者必須等待
消費者一次買完所需, 除非產品不夠 (process)
ex1: 產品 4, 消費 2 => 產品 2
ex2: T1 消費 2
T2 產品 1, 完成 1
T2 產品 1, 完成 1
T1 消費 1 (新的)
T2 產品 1, 完成 1 (處理新的 T1)
我需要列印前 n 秒結果
主要程式1 Clerk
private int product = 0;
private int order = 0;
private int process = 0;
// Manufacture
public synchronized void setProduct() {
product++;
process = Math.min(product, order);
order -= process;
System.out.printf("%d car available, %d requests processed!\n",
product, process);
product -= process;
if (order == 0) {
notify();
}
n
作者: swpoker (swpoker)   2018-10-14 08:48:00
程式進入點勒,main?要貼完整程式碼好嗎order檢查要放在前面啊
作者: zop (ㄞ肝ㄞ肝~一元二十罐~)   2018-10-14 17:01:00
我的話,只會設計跑一個生產者的thread,每秒生產之後去檢查消費者最早未結的需求,數量符合就結單,一直到數量不符,並且產生一個新的需求。
作者: obelisk0114 (追風箏的孩子)   2018-10-14 17:08:00
消費者消費數量是隨機的, 兩者每秒都在行動只是生產的產品不夠多, 消費者就需要等待
作者: zop (ㄞ肝ㄞ肝~一元二十罐~)   2018-10-15 10:14:00
製造跟購買中間,其實要多一個負責販賣的
作者: obelisk0114 (追風箏的孩子)   2018-10-15 12:49:00
Clerk 程式是負責販賣, 我覺得問題應該在它那邊

Links booklink

Contact Us: admin [ a t ] ucptt.com