消费者和生产者的案例
//牛奶箱类用来实现生产者和消费者的交互
public class Box {private int milknum=0;//定义一个牛奶数量private boolean state=false;//定义奶箱状态true表示奶箱中有牛奶//定义一个put方法表示存放牛奶public synchronized void put(int milknum) {if(state){try {wait();} catch (InterruptedException e) {e.printStackTrace();}}this.milknum=milknum;System.out.println("把第"+this.milknum+"瓶牛奶送入箱中");state=true;notifyAll();}//定义一个取走牛奶的方法public synchronized void get() {if (state) {System.out.println("用户把第" + this.milknum + "瓶牛奶取走了");state=false;notifyAll();}else{try {wait();} catch (InterruptedException e) {e.printStackTrace();}}}
}
public class BoxDemo {public static void main(String[] args) {Box b=new Box();Customer c=new Customer(b);Producer p=new Producer(b);Thread t1=new Thread(p);Thread t2=new Thread(c);t1.start();t2.start();}
}
public class Customer implements Runnable{private Box b;public Customer(Box b) {this.b=b;}@Overridepublic void run() {
while (true){b.get();
}}
}
public class Producer implements Runnable{private Box b;public Producer(Box b) {this.b=b;}@Overridepublic void run() {for(int i=1;i<=5;i++){b.put(i);}}
}
消费者和生产者的案例相关推荐
- 用三个线程实现生产者消费者模型,其中一个线程作为生产者,二个线程作为消费者,生产者随机生产一个时间戳或者字符串,消费者消费这个时间戳,并不能重复消费,并将其打印出来
题目要求: 用三个线程实现生产者消费者模型,其中一个线程作为生产者,二个线程作为消费者,生产者随机生产一个时间戳或者字符串,消费者消费这个时间戳,并不能重复消费,并将其打印出来.(这是一道百度面试的算 ...
- 【原创】modb 功能设计之“支持多消费者单生产者”
2019独角兽企业重金招聘Python工程师标准>>> 在< modb 开发之需求和总体设计 >中,第一个要实现的功能点就是 "支持多消费者单生产者" ...
- java并发:初探消费者和生产者模式
消费者和生产者模式 用继承Thread方式,用wait和notifyAll方法实现. 消费者和生产者模式的特点 1. 什么时候生产:仓库没有满的时候,生产者这可以生产,消费者也可以消费,仓库满的时候停 ...
- python 异步 生产者 消费者_python 生产者消费者模式 - 刘江的python教程
生产者消费者模式 阅读: 9884 评论:4 利用多线程和队列可以实现生产者消费者模式.该模式通过平衡生产线程和消费线程的工作能力来提高程序整体处理数据的速度. 什么是生产者和消费者? 在线程世界里, ...
- 操作系统中消费者与生产者的同步互斥问题
在操作系统中,我们有进程,进程会占用资源,有些资源是可以共享的,但有些资源是只允许一个占用,不能共享,只有当占用的线程用完释放后,下一个需要用的线程才可以申请使用,这样的资源便是临界资源.属于临界资源 ...
- 消费者和生产者问题,管程法和信号灯法
消费者和生产者问题 有两种方法,一种是管程法,一种是信号灯法,个人感觉区别不是很大,区别就在于信号灯法使用的是标志位控制,管程法是通过变量的值控制 废话少说,直接上代码 管程法 public clas ...
- 生产者消费者_王敬之 | 消费者还是生产者
点击上方蓝字关注我们 作者 | 王敬之 各位弟兄姐妹,各位主内家人,大家安息日平安!感谢主,我们在安息日再次通过网络一起来敬拜我们在天上的父.今天我们一起思考的主题是--"消费者还是生产者& ...
- RabbitMQ:消费者和生产者。
如果你曾经在工作中使用过网络软件,脑海中应该会有客户端和服务器端的概念.不管是浏览器和Web服务器,还是应用程序和MySQL服务器,都是其中一方发送请求,而另一方服务这些请求.你可以将其视为快餐车模式 ...
- Kafka启动成功且运行程序无报错,无法消费数据,即外网无法连接Kafka的消费者或生产者
Kafka启动成功且运行程序无报错,无法消费数据,即外网无法连接Kafka的消费者或生产者 sparkStreaming消费kafka中的数据,得不到数据以及无报错信息,找错误如下 首先检查一下,Ka ...
最新文章
- 检测缓存文件是否超时
- 2018.08.10 atcoder Median Sum(01背包)
- java 连接janusgraph_基于JanusGraph的大数据图数据库
- Mybatis源码笔记之浅析ParameterHandler
- 10.Springcloud的Zuul
- JavaScript 类型的隐式转换
- python异常处理知识点_一文掌握 Python 异常处理的所有知识点
- Activity调度机制
- 比特币 转账交易为什么要等6个区块确认才算到账 安全 以太坊12个区块
- 【电力电子技术AC-DC】单相桥式晶闸管整流电路(阻性/阻感性负载)simulink仿真
- Python 玩转数据 3 - NumPy ndarray Array Indexing, Slicing, Striding, View Subarray,Copy Subarray
- Python生成器教程
- Import “github.com/gogo/protobuf/gogoproto/gogo.proto“ was not found or had errors.
- Java 发送消息模版内容换行(包含微信,企业微信)
- 老友记台词学习笔记 SE01EP03(三)
- kali Linux隐藏IP教程,Kali Linux 设置动/静态IP地址以及修改DNS
- 改进埃尔米特(Hermite)分段三次插值——(可在pchip函数中自定义导数值)
- android 小q机器人,腾讯小Q机器人第二代,是机器人也是家人
- python中的aliasing
- js判断数据是否为空值的方法