public class Shop {
private int sum=0;//面包总数
private Random random =new Random();
/*
* 消费面包
* 核心点:sum不能为0的时候,才能消费面包
* 如果为0,消费就不能运行了
* */
public synchronized void sale() {
//如果sum为0,消费功能停止
if(sum ==0) {
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else {
//如果sum不为0,消费功能正常运行
int value =random.nextInt(sum)+1;
System.out.println("当前消费面包:"+value);
sum-=value;
if(sum ==0) {
this.notify();//唤醒同一个锁对象的一根线程,唤醒别人
try {
this.wait();//当前线程等待,沉睡自己
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
生产者
/*
* 生产面包
* 核心点:sum不能为0,执行生产面包
* */
public synchronized void make() {
//如果sum