题目:在饭店中,厨师需要做十道菜。厨师做好一道菜,就招呼侍者端走,菜还没有端走时,厨师就睡觉。侍者端走菜时把厨师唤醒,厨师做下一道菜。无做好的菜,侍者就睡觉。请编写程序模拟厨师和侍者的合作。(提示:厨师线程控制程序的结束,侍者线程不能控制程序结束。否则就是多头控制,影响程序的可维护性。

文章目录

  • 废话不多说,直接上代码
  • 主函数测试类
  • 厨师线程类设计
  • 侍者线程类设计
  • 餐馆类设计

废话不多说,直接上代码

主函数测试类

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();}}}
}

在饭店中,厨师需要做十道菜。厨师做好一道菜,就招呼侍者端走,菜还没有端走时,厨师就睡觉。侍者端走菜时把厨师唤醒,厨师做下一道菜。无做好的菜,侍者就睡觉。请编写程序模拟厨师和侍者的合作。(提示:厨师线程相关推荐

  1. 矩阵转置算法 oracle,请编写程序fun,函数的功能是:实现B=A+Aˊ,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函...

    请编写程序fun,函数的功能是:实现B=A+Aˊ,即把矩阵A加上A的转置,存放在矩阵B中.计算结果在main函 更多相关问题 假定砌块对孔砌筑,孔内不灌实混凝土,柱头全截面设一预制刚性垫块,且梁端有效 ...

  2. 请编写程序,读入CSV文件中数据,循环获得用户输入,直至用户直接输入“Q”退出。根据用户输入的星座名称,输出此星座的出生日期范围及对应字符形式。如果输入的名称有误,请输出“输入星座名称有误”

    星座,开始月日,结束月日,Unicode ‌水瓶座,120,218,9810 ‌双鱼座,219,320,9811 ‌白羊座,321,419,9800 ‌金牛座,420,520,9801 ‌双子座,52 ...

  3. 【C语言】平均分的战争。有m个人的成绩存放在score数组中,请编写程序求出平均成绩并且罗列出低于平均分的分数。

    [问题描述] 平均分的战争.有m个人的成绩存放在score数组中,请编写程序求出平均成绩并且罗列出低于平均分的分数. [输入形式]输入共两行: 第一行成绩个数N,N<=20 第二行,N个以空格分 ...

  4. 请编写程序,由键盘录入一个字符串,统计字符串中英文字母和数字分别有多少个。 比如:Hello12345World中字母:10个,数字:5个。

    package HomeWorks.Day.Day22;import java.nio.charset.StandardCharsets; import java.util.Scanner;publi ...

  5. 请编写程序编写前n个整数的全排列_26道基础算法题(请查收)

    1. 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.(例如: 153是一个"水仙花数",因为153 ...

  6. 探讨Java中最常见的十道面试题(超经典)

    第一,谈谈final, finally, finalize的区别.  final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明 ...

  7. python编写程序模拟硬币的投掷、假设0表示硬币的反面_修改了Python中的硬币投掷程序,无法完成循环...

    谢谢你们的帮助!以下是完整的代码:D''' _MBE_ CIS-115-09 Lab 6-1 Write a python program, using modules / functions, to ...

  8. 他写出了 Vue,却做不对这十道 Vue 笔试题

    有十道关于 Vue 的选择题,在群里引出了一众社区知名人士竞折腰,最后钓出了 Evan You 本人亲自挑战-- 然后他自己也做错了(其中的某两道). 鲁迅会做错鲁迅文选的阅读理解?有截图为证: 所以 ...

  9. 面试中经常会问的智力题,来看看你会做几道

    转载自   面试中经常会问的智力题,来看看你会做几道 下面是大部分题目来自滴滴出行2017秋招题.开始头脑风暴吧~~~ 问题 question one 有50家人家,每家一条狗.有一天警察通知,50条 ...

最新文章

  1. 【新浪上海】上海信息化建设进入新阶段 首席信息官联盟发挥重要作用
  2. SharpWebMail介绍和安装(转)
  3. DelphiX教程系列 4 - 滚动背景 part 1
  4. keil 使用AC6 中文警告解决办法
  5. 如何迅速成长成为一名数据分析师(都是干货)?
  6. 推荐算法炼丹笔记:推荐系统采样评估指标及线上线下一致性问题
  7. 寻找下一款Prisma APP:深度学习在图像处理中的应用探讨
  8. 一直在构建工作空间_国际资讯Python与地理空间分析
  9. JS引擎线程的执行过程的三个阶段
  10. go errgroup 递归搜索目录中的Go文件
  11. centos7定制linux镜像,自定制Centos7.3系统镜像(ISO)
  12. Spring框架面试工作必备锦囊 Java框架-Spring
  13. coupled/decoupled
  14. STL常用函数总结-set
  15. 23. Navigator javaEnabled() 方法
  16. 四平方和蓝桥杯Java_蓝桥杯-四平方和问题
  17. 史上最全的Java从入门到精通,播放最多的Java视频教程
  18. 彼得林奇的成功投资 (修订版)
  19. 电脑准考证登录不上去
  20. 计算机专业素质拓展,创新与素质拓展学分.doc

热门文章

  1. ajax的dataType属性
  2. Adobe 官方公布的RTMP规范
  3. UG10.0导出到DWG失败的解决方法
  4. 动网论坛的广告注册,广告回复 问题
  5. 2023 年 MySQL 8.0 安装配置 最简易(保姆级)
  6. 平面设计:鲜花导购网页
  7. 做一个像狼一样的男人
  8. excel公式转换成java_将长If / Then公式转换为Excel宏
  9. 程序员英语语法学习(1)句子成分有八个,你却只知主谓宾?
  10. ps界面为啥突然变大了_PS教程:用PS的3D功能,制作炫酷立体字!