public class Demo11 {public static void main(String[] args) {food f = new food();new cook(f).start();new waiter(f).start();}//静态厨师类继承Threadstatic class cook extends Thread{private food f;public cook(food f) {this.f = f;}@Overridepublic void run() {for(int i=0;i<100;i++){if(i%2==0){f.SetNameandTaste("饺子","牛肉圆葱");}else{f.SetNameandTaste("包子","猪肉玉米");}}}}//静态服务员类继承Threadstatic class waiter extends Thread{private food f;public waiter(food f) {this.f = f;}@Overridepublic void run() {for(int i=0;i<100;i++) {try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}f.get();}}}//菜类static class food{private String name;private String taste;//true表示可以生产。boolean flag = true;public synchronized void SetNameandTaste(String name, String taste) {if (flag) {this.name = name;try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}this.taste = taste;flag = false; //把flag改成false 下一次调用flag时是false 为了进不来循环 避免厨师连续生产.this.notifyAll(); //唤醒当前在this下睡着的所有线程.try {this.wait(); //唤醒后让厨师线程睡着.} catch (InterruptedException e) {e.printStackTrace();}}}public synchronized void get(){if(!flag) {System.out.println("服务员端走的是:" + name + "菜的味道是:" + taste);flag = true; //把flag改成true 下一次调用flag时是true 为了进不来循环 避免服务员连续端菜.this.notifyAll();//唤醒当前在this下睡着的所有线程.try {this.wait();//唤醒后让服务员线程睡着.} catch (InterruptedException e) {e.printStackTrace();}}}}
}

使用idea编辑生产者与消费者相关推荐

  1. C#多线程学习(三) 生产者和消费者

    C#多线程学习(三) 生产者和消费者 原文链接:http://kb.cnblogs.com/page/42530/ 本系列文章导航 C#多线程学习(一) 多线程的相关概念 C#多线程学习(二) 如何操 ...

  2. 生产者与消费者问题算法 C++(一对多)

    目录 文章目录 前言 一.实验内容 二.背景知识 三.思路 四.核心代码 1.生产者类 2.1 消费者子类1 2.2 消费者子类2 2.3 消费者子类3 3.主函数 五.源代码 六.运行结果 ​编辑 ...

  3. kafka学习总结(含java生产者、消费者、Topic操作代码)

    kafka(http://kafka.apache.org)是一款分布式消息发布和订阅的系统,具有高性能和高吞吐率.它的优点是能够直接使用磁盘进行存储.线性读写.速度快,避免了数据在JVM内存和系统内 ...

  4. RabbitMQ 入门系列(2)— 生产者、消费者、信道、代理、队列、交换器、路由键、绑定、交换器

    本系列是「RabbitMQ实战:高效部署分布式消息队列」和 「RabbitMQ实战指南」书籍的读书笔记. RabbitMQ 中重要概念 1. 生产者 生产者(producer)创建消息,然后发送到代理 ...

  5. linux进程间通信:system V 信号量 生产者和消费者模型编程案例

    生产者和消费者模型: 有若干个缓冲区,生产者不断向里填数据,消费者不断从中取数据 两者不冲突的前提: 缓冲区有若干个,且是固定大小,生产者和消费者各有若干个 生产者向缓冲区中填数据前需要判断缓冲区是否 ...

  6. Python中的生产者与消费者模式(转载)

    利用多线程和队列可以实现生产者消费者模式.该模式通过平衡生产线程和消费线程的工作能力来提高程序整体处理数据的速度. 1.什么是生产者和消费者? 在线程世界里,生产者就是生产数据(或者说发布任务)的线程 ...

  7. 12.多线程的实现方式、线程安全问题的产生与解决以及生产者与消费者问题

    一.实现多线程 1.1 了解多线程 多线程是指从软件或者硬件上实现多个线程并发执行的技术,具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,从而提升性能. 1.2 并发与并行 并行是指同 ...

  8. java多线程 生产者消费者_java多线程之-生产者与消费者

    java多线程之-并发协作[生产者与消费者]模型 对于多线程程序来说,不管c/c++ java python 等任何编程语言,生产者与消费者模型都是最为经典的.也就是可以说多线程的并发协作 对于此模型 ...

  9. python生产和消费模型_python queue和生产者和消费者模型

    queue队列 当必须安全地在多个线程之间交换信息时,队列在线程编程中特别有用. classqueue.Queue(maxsize=0) #先入先出classqueue.LifoQueue(maxsi ...

最新文章

  1. MATLAB 未找到支持的编译器或 SDK。您可以安装免费提供的 MinGW-w64 C/C++ 编译器
  2. 速卖通开店条件和流程最新版
  3. 谈论Java原子变量和同步的效率 -- 颠覆你的生活
  4. yii和mysql apache_配置Apache,php5,mysql ,以及配置yii框架的简介
  5. 微服务升级_SpringCloud Alibaba工作笔记0006---spring gateway工作流程
  6. 使用DataX同步MaxCompute数据到TableStore(原OTS)优化指南
  7. android:ClassNotFoundException for Activity class的解决方法
  8. Java进阶03 IO基础
  9. vector性能调优之resize与reserve
  10. mongoose学习记录
  11. Windows7下载、安装、配置ADB的步骤
  12. 又一个新概念——云编程(Cloud programming)
  13. 如何把字符串复制给数组杭电11页几小题的总结
  14. springboot接口慢_Springboot tomcat 启动慢 响应时间超长 问题解决
  15. word中公式编辑完后光标靠下解决办法
  16. 大疆网上测评题库_【大疆在线测试有几套题啊?】-看准网
  17. MySQL事务 - 自增ID的回滚以及Auto Increment在InnoDB的实现
  18. 使用chalk时颜色不变的问题解决
  19. 我们都没有迎来决赛---Leo读 不是孙振耀写的职场感言 1
  20. cmd命令行远程连接 CentOS 服务器

热门文章

  1. 转龚文祥的一篇文章:对看起来很美的网站要保持审慎的乐观
  2. 中职计算机英语教师教学总结,中职教师工作总结
  3. Perculia for Mac(苹果电脑蓝牙助手)
  4. 【转】Win7 更改文件夹背景
  5. mysql add months,mysql里有没有类似oracle里的ADD_MONTHS函数,自能的提取间隔的月份...
  6. 2015.09.07 活着就是一种召唤——《活着》余华
  7. 如何把新加的分区挂载到/根目录
  8. 毕业生社保、档案和户口详解 2
  9. portal无线认证服务器,无线AC配置portal认证功能portal 认证服务器问题
  10. 管理者神功之“九”阴真经