生產者每秒可以生產一樣產品 (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