在饭店中,厨师需要做十道菜。厨师做好一道菜,就招呼侍者端走,菜还没有端走时,厨师就睡觉。侍者端走菜时把厨师唤醒,厨师做下一道菜。无做好的菜,侍者就睡觉。请编写程序模拟厨师和侍者的合作。(提示:厨师线程
题目:在饭店中,厨师需要做十道菜。厨师做好一道菜,就招呼侍者端走,菜还没有端走时,厨师就睡觉。侍者端走菜时把厨师唤醒,厨师做下一道菜。无做好的菜,侍者就睡觉。请编写程序模拟厨师和侍者的合作。(提示:厨师线程控制程序的结束,侍者线程不能控制程序结束。否则就是多头控制,影响程序的可维护性。
文章目录
- 废话不多说,直接上代码
- 主函数测试类
- 厨师线程类设计
- 侍者线程类设计
- 餐馆类设计
废话不多说,直接上代码
主函数测试类
package T3;/*** @author 胖胖的山头* @create 2020-10-24 14:51*/
public class RestaurantTest {public static void main(String[] args) {Restaurant restaurant=new Restaurant();Chef chef = new Chef(restaurant);Waiter waiter = new Waiter(restaurant);chef.setName("厨师");waiter.setName("侍者");chef.start();waiter.start();}
}
厨师线程类设计
package T3;/*** 厨师线程** @author 胖胖的山头* @create 2020-10-24 14:52*/
public class Chef extends Thread{private Restaurant restaurant=new Restaurant();public Chef(Restaurant restaurant) {this.restaurant=restaurant;}@Overridepublic void run() {while (true){try {sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}if(restaurant.getCount()<10){restaurant.cook();}else {System.out.println("上菜结束。。欢迎下次光临");break;}}}
}
侍者线程类设计
package T3;/*** @author 胖胖的山头* @create 2020-10-24 14:53*/
public class Waiter extends Thread{private Restaurant restaurant=new Restaurant();public Waiter(Restaurant restaurant) {this.restaurant=restaurant;}@Overridepublic void run() {while (true){try {sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}restaurant.serving();if (restaurant.getCount()==10){break;}}}
}
餐馆类设计
package T3;/*** 餐馆** @author 胖胖的山头* @create 2020-10-24 14:55*/
public class Restaurant {private int greens=0;private int count=0;public int getCount() {return count;}public int getGreens() {return greens;}public synchronized void cook(){if (greens==0){greens++;count++;notify();System.out.println(Thread.currentThread().getName()+":做好了第"+count+"道菜");}else{try {wait();} catch (InterruptedException e) {e.printStackTrace();}}}public synchronized void serving(){if (greens>0) {greens--;notify();System.out.println(Thread.currentThread().getName() + ":上了第" + count + "道菜");}else{try {wait();} catch (InterruptedException e) {e.printStackTrace();}}}
}
在饭店中,厨师需要做十道菜。厨师做好一道菜,就招呼侍者端走,菜还没有端走时,厨师就睡觉。侍者端走菜时把厨师唤醒,厨师做下一道菜。无做好的菜,侍者就睡觉。请编写程序模拟厨师和侍者的合作。(提示:厨师线程相关推荐
- 矩阵转置算法 oracle,请编写程序fun,函数的功能是:实现B=A+Aˊ,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函...
请编写程序fun,函数的功能是:实现B=A+Aˊ,即把矩阵A加上A的转置,存放在矩阵B中.计算结果在main函 更多相关问题 假定砌块对孔砌筑,孔内不灌实混凝土,柱头全截面设一预制刚性垫块,且梁端有效 ...
- 请编写程序,读入CSV文件中数据,循环获得用户输入,直至用户直接输入“Q”退出。根据用户输入的星座名称,输出此星座的出生日期范围及对应字符形式。如果输入的名称有误,请输出“输入星座名称有误”
星座,开始月日,结束月日,Unicode 水瓶座,120,218,9810 双鱼座,219,320,9811 白羊座,321,419,9800 金牛座,420,520,9801 双子座,52 ...
- 【C语言】平均分的战争。有m个人的成绩存放在score数组中,请编写程序求出平均成绩并且罗列出低于平均分的分数。
[问题描述] 平均分的战争.有m个人的成绩存放在score数组中,请编写程序求出平均成绩并且罗列出低于平均分的分数. [输入形式]输入共两行: 第一行成绩个数N,N<=20 第二行,N个以空格分 ...
- 请编写程序,由键盘录入一个字符串,统计字符串中英文字母和数字分别有多少个。 比如:Hello12345World中字母:10个,数字:5个。
package HomeWorks.Day.Day22;import java.nio.charset.StandardCharsets; import java.util.Scanner;publi ...
- 请编写程序编写前n个整数的全排列_26道基础算法题(请查收)
1. 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.(例如: 153是一个"水仙花数",因为153 ...
- 探讨Java中最常见的十道面试题(超经典)
第一,谈谈final, finally, finalize的区别. final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明 ...
- python编写程序模拟硬币的投掷、假设0表示硬币的反面_修改了Python中的硬币投掷程序,无法完成循环...
谢谢你们的帮助!以下是完整的代码:D''' _MBE_ CIS-115-09 Lab 6-1 Write a python program, using modules / functions, to ...
- 他写出了 Vue,却做不对这十道 Vue 笔试题
有十道关于 Vue 的选择题,在群里引出了一众社区知名人士竞折腰,最后钓出了 Evan You 本人亲自挑战-- 然后他自己也做错了(其中的某两道). 鲁迅会做错鲁迅文选的阅读理解?有截图为证: 所以 ...
- 面试中经常会问的智力题,来看看你会做几道
转载自 面试中经常会问的智力题,来看看你会做几道 下面是大部分题目来自滴滴出行2017秋招题.开始头脑风暴吧~~~ 问题 question one 有50家人家,每家一条狗.有一天警察通知,50条 ...
最新文章
- 【新浪上海】上海信息化建设进入新阶段 首席信息官联盟发挥重要作用
- SharpWebMail介绍和安装(转)
- DelphiX教程系列 4 - 滚动背景 part 1
- keil 使用AC6 中文警告解决办法
- 如何迅速成长成为一名数据分析师(都是干货)?
- 推荐算法炼丹笔记:推荐系统采样评估指标及线上线下一致性问题
- 寻找下一款Prisma APP:深度学习在图像处理中的应用探讨
- 一直在构建工作空间_国际资讯Python与地理空间分析
- JS引擎线程的执行过程的三个阶段
- go errgroup 递归搜索目录中的Go文件
- centos7定制linux镜像,自定制Centos7.3系统镜像(ISO)
- Spring框架面试工作必备锦囊 Java框架-Spring
- coupled/decoupled
- STL常用函数总结-set
- 23. Navigator javaEnabled() 方法
- 四平方和蓝桥杯Java_蓝桥杯-四平方和问题
- 史上最全的Java从入门到精通,播放最多的Java视频教程
- 彼得林奇的成功投资 (修订版)
- 电脑准考证登录不上去
- 计算机专业素质拓展,创新与素质拓展学分.doc