34 lines
1.0 KiB
Java
34 lines
1.0 KiB
Java
package com.inmind.wait_notify08;
|
|
|
|
public class BaoZiPu implements Runnable{
|
|
BaoZi baoZi;
|
|
|
|
//构造方法来对baozi属性赋值
|
|
public BaoZiPu(BaoZi baoZi) {
|
|
this.baoZi = baoZi;
|
|
}
|
|
|
|
@Override
|
|
public void run() {
|
|
//如果有包子就等着,如果没有包子就做一个包子
|
|
while (true) {
|
|
//使用同步代码块解决线程安全问题
|
|
synchronized (baoZi){
|
|
if (baoZi.flag) {
|
|
//如果有包子就等着
|
|
try {
|
|
baoZi.wait();//让当前线程等待,释放锁对象
|
|
} catch (InterruptedException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}else {
|
|
//如果没有包子就做一个包子
|
|
System.out.println("包子铺做了一个包子");
|
|
baoZi.flag = true;
|
|
baoZi.notify();//唤醒顾客线程,通知包子做好了
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|