通过分析需求,我们可以得知我们需要创建2个线程类,包子铺和吃包子的两个线程类。因为包子铺和吃包子的都是同一个包子,所以这里将包子作为对象锁。
1.创建一个包子类,设置包子的属性
/**
* @author jianyeli
*/
public class Baozi {
String pi;
String xian;
boolean flag = true;
}
2.创建包子铺的线程类
/**
*包子铺是一个线程类,继承Thread设置线程任务为做包子
* 对包子的状态进行判断,true:有包子,调用wait方法进行等待
* false没有包子,包子铺生产包子,生产好了之后
* 将包子的状态更改为true,调用notify方法继续执行。
*
* 注意:
* 包子铺线程和包子线程是通信的关系,其中必须保证只有一个在执行,调用同步锁,把包子作为锁对象
* 包子铺类和吃货类把包子作为参数传递进来
* @author jianyeli
*/
public class Baozipu extends Thread {
private Baozi bz;
public Baozipu(Baozi bz) {
this.bz = bz;
}
@Override
public void run(){
int count = 0;
while(true){
synchronized(bz)