package ConcurrentTest;
import thread.BlockQueue;
/**
* Created by chengxiao on 2017/6/17.
*/
public class JiaoziDemo {
//创建个共享对象做监视器用
private static Object obj = new Object();
//大木盘子,一盘最多可盛10份饺子,厨师做满10份,服务员就可以端出去了。
private static Integer platter = 0;
//卖出的饺子总量,卖够100份就打烊收工
private static Integer count = 0;
/**
* 厨师
*/
static class Cook implements Runnable{
@Override
public void run() {
while(count<100){
synchronized (obj){
while (platter<10){
platter++;
}
//通知服务员饺子好了,可以端走了
obj.notify();
System.out.println(Thread.currentThread().getName()+"--饺子好啦,厨师休息会儿");
}
try {
//线程睡一会,帮助服务员线程抢到对象锁
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName()+"--打烊收工,厨师回家");
}
}
/**
* 服务员
*/
static class Waiter implements Runnable{
@Override
public void run() {
while(count<100){
synchronized (obj){
//厨师做够10份了,就可以端出去了
while(platter < 10){
try {
System.out.println(Thread.currentThread().getName()+"--饺子还没好,等待厨师通知...");
obj.wait();
BlockQueue
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//饺子端给客人了,盘子清空
platter-=10;
//又卖出去10份。
count+=10;
System.out.println(Thread.currentThread().getName()+"--服务员把饺子端给客人了");
}
}
System.out.println(Thread.currentThread().getName()+"--打烊收工,服务员回家");
}
}
public static void main(String []args){
Thread cookThread = new Thread(new Cook(),"cookThread");
Thread waiterThread = new Thread(new Waiter(),"waiterThread");
cookThread.start();
waiterThread.start();
}
}
cookThread--饺子好啦,厨师休息会儿 waiterThread--服务员把饺子端给客人了 waiterThread--饺子还没好,等待厨师通知... cookThread--饺子好啦,厨师休息会儿 waiterThread--服务员把饺子端给客人了 waiterThread--饺子还没好,等待厨师通知... cookThread--饺子好啦,厨师休息会儿 waiterThread--服务员把饺子端给客人了 waiterThread--饺子还没好,等待厨师通知... cookThread--饺子好啦,厨师休息会儿 waiterThread--服务员把饺子端给客人了 waiterThread--饺子还没好,等待厨师通知... cookThread--饺子好啦,厨师休息会儿 waiterThread--服务员把饺子端给客人了 waiterThread--饺子还没好,等待厨师通知... cookThread--饺子好啦,厨师休息会儿 waiterThread--服务员把饺子端给客人了 waiterThread--饺子还没好,等待厨师通知... cookThread--饺子好啦,厨师休息会儿 waiterThread--服务员把饺子端给客人了 waiterThread--饺子还没好,等待厨师通知... cookThread--饺子好啦,厨师休息会儿 waiterThread--服务员把饺子端给客人了 waiterThread--饺子还没好,等待厨师通知... cookThread--饺子好啦,厨师休息会儿 waiterThread--服务员把饺子端给客人了 waiterThread--饺子还没好,等待厨师通知... cookThread--饺子好啦,厨师休息会儿 waiterThread--服务员把饺子端给客人了 waiterThread--打烊收工,服务员回家 cookThread--打烊收工,厨师回家
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有