需要用到的知识点
wait、notify方法
进程同步
代码演示
baozi类
public class Baozi {
String pi;
String xian;
Boolean flag=false;
}
baozipu类
public class BaoZipu extends Thread{
private Baozi bz;
public BaoZipu(Baozi bz) {
this.bz = bz;
}
@Override
public void run() {
while (true) {
synchronized (bz) {
if (bz.flag == true) {
try {
bz.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("没有包子开始做包子");
bz.flag = true;
System.out.println("包子做好了");
bz.notifyAll();
}
}
}
}
chihuo类
public class ChiHuo extends Thread {
private Baozi bz;
public ChiHuo( Baozi bz) {
this.bz = bz;
}
@Override
public void run() {
while (true){
synchronized (bz){
if (bz.flag== false){
try {
bz.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("有包子吃货开始吃包子");
bz.flag=false;
bz.notify();
}
}
}
}
测试类
public class BzTest {
public static void main(String[] args) {
Baozi baozi = new Baozi();
ChiHuo chiHuo = new ChiHuo(baozi);
BaoZipu baoZipu = new BaoZipu(baozi);
baoZipu.start();
chiHuo.start();
}
}
程序结果: