剑指offer-生产者消费者模型
来源:互联网 发布:儿童计算机编程 编辑:程序博客网 时间:2024/05/29 07:52
模拟消费者和生产者的多线程生产。
1,Resource.java定义了一个数组,生产者向里面存入数据,消费者从里面取出数据。
2,Input.java ,生产者线程
3,Output.java, 消费者线程
//创建资源类
Resource.java
package case98_ProducerConsumer;//创建资源类public class Resource {// 创建存数数组private int[] cell = new int[50];// inPos表示存入时的数组下标,outPos表示取出时数组下标private int inPos = 0, outPos = 0;// cell[]数组里面当前的有效数数量private int count = 0;// 存数public synchronized void put(int num) {try {while (count == cell.length)this.wait();cell[inPos] = num;System.out.println(">put< 线程正在执行,并且放入数据 cell[" + inPos + "]" + "=" + cell[inPos] + "......");inPos++;if (inPos == cell.length)inPos = 0;count++;this.notify();} catch (InterruptedException ie) {ie.printStackTrace();}}// 取数public synchronized int get() {int data = 0;try {while (count == 0)this.wait();data = cell[outPos];System.out.println(">get< 线程正在执行,并且取出数据 cell[" + outPos + "]" + "=" + cell[outPos]);outPos++;if (outPos == cell.length)outPos = 0;count--;this.notify();} catch (InterruptedException e) {e.printStackTrace();}return data;}}
//创建存数线程,生产者
Input.java
package case98_ProducerConsumer;//存数线程 ,生产者线程public class Input implements Runnable {private Resource s;private int num = 0;// 构造函数public Input(Resource s) {this.s = s;}@Overridepublic void run() {while (true) {s.put(num++);if (num > 191)num = 0;}}}
//创建取数线程,消费者
Output.java
package case98_ProducerConsumer;//取数线程, 消费者线程public class Output implements Runnable {private Resource s;// 构造函数public Output(Resource s) {this.s = s;}@Overridepublic void run() {while (true)s.get(); // 循环取出元素}}
//创建主线程
ProducerConsumer.java
package case98_ProducerConsumer;public class ProducerConsumer {public static void main(String[] args) {// 创建资源对象Resource s = new Resource();// 创建input对象Input in = new Input(s);// 创建output对象Output out = new Output(s);// 创建生产者线程new Thread(in).start();// 创建消费者线程new Thread(out).start();}}
0 0
- 剑指offer-生产者消费者模型
- 生产者-消费者模型
- 生产者/消费者模型
- 生产者 消费者模型
- 生产者消费者模型
- 生产者&&消费者模型
- 模拟生产者/消费者模型
- 生产者消费者模型
- 生产者消费者模型
- 生产者与消费者模型
- 生产者/消费者模型
- 生产者与消费者模型
- 生产者/消费者模型
- 生产者消费者模型
- 生产者消费者模型
- 生产者消费者模型
- 生产者消费者模型 ArrayBlockingQueue
- 生产者消费者模型
- SSH远程登录服务器
- Android 控件
- RecyclerView 滑动时的优化处理
- 自定义微信菜单
- native-base中icon不能正确显示
- 剑指offer-生产者消费者模型
- 用BigDump工具导入超大MySQL数据库备份文件
- 用python实现快速排序算法
- Merge Two Sorted Lists
- 二分法典型应用(二)最大化最小值 POJ2456 Aggressive cows
- GitHub入门与实践(二)——初始设置Git,以及在GitHub中添加公开密钥
- 【JAVA技术库】分页模糊查询 进阶版
- 容斥原理 && 欧拉函数 && 抽屉原理 总结
- jQuery 选择器整理