包子类
public class Baozi {
String pi;
String xian ;
//包子的状态 有 true 没有 fasle
boolean flag =false;
}
包子铺类
public class BaoziPu extends Thread {
private Baozi baozi;
public BaoziPu(Baozi baozi) {
this.baozi = baozi;
}
@Override
public void run() {
int count = 0;
while (true) {
synchronized (baozi) {
if (baozi.flag == true) {
try {
baozi.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//wait之后的代码
//增加趣味 交替生产
if (count % 2 == 0) {
baozi.pi = "薄皮";
baozi.xian = "三鲜";
} else {
baozi.pi = "冰皮";
baozi.xian = "牛肉大葱馅";
}
count++;
System.out.println("包子铺正在生产:" + baozi.pi + baozi.xian + "包子");
try {
TimeUnit.SECONDS.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
baozi.flag = true;
baozi.notifyAll();
System.out.println("包子生产完毕");
}
}
}
}
吃货类
public class Chihuo extends Thread {
private Baozi baozi;
public Chihuo(Baozi baozi) {
this.baozi = baozi;
}
@Override
public void run() {
//死循环让 吃货一直吃包子
while (true) {
synchronized (baozi) {
if (baozi.flag == false) {
try {
baozi.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//唤醒之后
System.out.println("吃货在吃" + baozi.pi + baozi.xian + "包子");
baozi.flag = false;
baozi.notify();
System.out.println("包子吃完了,唤醒包子铺线程");
System.out.println("===========");
}
}
}
}
吃货类
public static void main(String[] args) {
Baozi baozi = new Baozi();
new BaoziPu(baozi).start();
new Chihuo(baozi).start();
}
网友评论