黑马程序员技术交流社区

标题: 【成都校区】多线程编程问题 [打印本页]

作者: 陈靖仇是你爸爸    时间: 2018-11-22 12:53
标题: 【成都校区】多线程编程问题
多线程问题:吃货问题,保证线程安全的前提下,加锁保证使用同一共享数据
包子铺线程生产包子,吃货线程消费包子。当包子没有时(包子状态为false),吃货线程等待,包子铺线程生产包子
(即包子状态为true),并通知吃货线程(解除吃货的等待状态),因为已经有包子了,那么包子铺线程进入等待状态。
接下来,吃货线程能否进一步执行则取决于锁的获取情况。如果吃货获取到锁,那么就执行吃包子动作,包子吃完(包
子状态为false),并通知包子铺线程(解除包子铺的等待状态),吃货线程进入等待。包子铺线程能否进一步执行则取
决于锁的获取情况
包子资源类:
        public class BaoZi {
                  String pier ;
                String xianer ;
                boolean flag = false ;//包子资源 是否存在 包子资源状态
}
吃货线程类:
public class ChiHuo extends Thread{
        private BaoZi bz;
        public ChiHuo(String name,BaoZi bz){
        super(name);
        this.bz = bz;
}
@Override
        public void run() {
        while(true){
        synchronized (bz){
        if(bz.flag ==  == false){//没包子
try {
        bz.wait();
        } catch (InterruptedException e) {
        e.printStackTrace();
}
}
System.out.println("吃货正在吃"+bz.pier+bz.xianer+"包子");
        bz.flag = false;
        bz.notify();
                        }
                }
        }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2