一、设计
1、顾客等待老板做包子,老板没做好就等待,如果老板做好了就吃包子,吃完了没有了就继续等待。
2、老板做好了包子就等待顾客吃完,顾客吃完要求老板做包子后就继续做包子,做好了通知顾客吃。
BaoZhi.java
public class BaoZhi {
String pi ;
String xian;
Boolean readyFlag = false;
public BaoZhi() {
}
}
GuKe.java
public class GuKe extends Thread {
BaoZhi bz;
public GuKe(BaoZhi bz) {
this.bz = bz;
}
@Override
public void run() {
while (true){
//和顾客线程必须互斥
synchronized (bz){//用主线程创建的包子对象最为锁
//如果有包子,顾客就吃包子,如果没有包子就等待
if (!bz.readyFlag){
System.out.println("顾客期待包子中!");
try {
bz.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}