50,503
社区成员
发帖
与我相关
我的任务
分享
/*、
包子
*/
public class BaoZi {
public boolean flag=false;//表示包子资源是否存在
}
创建一个包子铺/*
该类表示包子铺类,
如果没有包子就做包子,如果有包子就等着
*/
public class BaoZiPu implements Runnable {
public BaoZi baozi;
public BaoZiPu(BaoZi baozi) {
this.baozi = baozi;
}
public BaoZiPu() {
}
@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();
}
}
}
}
}
吃货类
/*
任务是吃包子,如果没有包子就等待,如果有包子就要吃
*/
public class ChiHuo implements Runnable {
public BaoZi baozi;
public ChiHuo(BaoZi baozi) {
this.baozi = baozi;
}
public ChiHuo() {
}
@Override
public void run() {
while (true) {
synchronized (baozi) {
if (baozi.flag) {//有包子
System.out.println("吃包子");
baozi.flag = false;
baozi.notify();
} else {//没包子
System.out.println("没包子了");
try {
baozi.wait();
baozi.notify();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
测试类
public class Test {
public static void main(String[] args) {
//创建一个包子对象,用来作为2个线程的锁对象
BaoZi baoZi = new BaoZi();
//创建包子铺和吃货2个线程任务对象,传给线程区执行
BaoZiPu baoZiPu = new BaoZiPu(baoZi);
ChiHuo chiHuo = new ChiHuo(baoZi);
new Thread(baoZiPu).start();
new Thread(chiHuo).start();
}
}
简单的一个demo希望对你有帮助