⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clerk.java

📁 java 教程相应的代码 全是自己写的内附注释 很容易看明白的
💻 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 + -