📄 clerk.java
字号:
package demo.chapter09.wait;
import java.util.Vector;
/**
* 售货员
*
* @author Frank
*/
public class Clerk {
// 货架对象,用来存放生产出来的产品
private Vector<Product> store = new Vector<Product>();
// 货架可以存放的最大产品数量
private int max = 5;
// 这个方法由生产者调用
// 生产者把产品生产出来,然后调用该方法把产品交给售货员
public synchronized void receiveProduct(Product product) {
while (store.size() == max) {
try {
// 目前没有空间收产品,请稍候!
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
store.add(product);
System.out.printf("库存状态(%d) 新产品(%s)%n",
store.size(), product.getCode());
// 通知等待区中的一个消费者可以继续工作了
notify();
}
// 这个方法由消费者调用
public synchronized Product buyProduct() {
while (store.size() == 0) {
try {
// 缺货了,请稍候!
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Product p = store.remove(0);
System.out.printf("库存状态(%d) 取走产品(%s)%n", store.size(), p.getCode());
// 通知等待区中的一个生产者可以继续工作了
notify();
return p;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -