[问题] 多执行续的消费者和生产者

楼主: 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