s-day06-线程等待唤醒的案例(生产者与消费者)

This commit is contained in:
2026-08-06 15:02:52 +08:00
parent 5691ddfc8a
commit 085eeb3372
4 changed files with 84 additions and 0 deletions
@@ -0,0 +1,33 @@
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();//唤醒顾客线程,通知包子做好了
}
}
}
}
}