Java简单的生产者与消费者实现
来源:互联网 发布:form.js 跨域上传文件 编辑:程序博客网 时间:2024/05/21 10:13
在初始学习Java的过程中,多线程中的关于生产者与消费者问题常常困扰着我们,他们两者之间即相互依赖,又相互排斥。整理一个简单的消费者与生产者模式,代码如下:
package Colloection.bianli;/* * 生产者与消费者实例 * 该问题描述了两个共享固定大小缓冲区的线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题 * 该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据 * Runnable接口没有start方法,所以只能用其他方式执行 * wait()方法中的参数为不填写,如果使用wait(m)的方式,那么等待m毫秒的时间之后,会自动解除等待。wait()方法和notify()方法必须成对存在。初学者笔记,不喜勿喷 */public class ProducerAndConsumer { public static void main(String[] args) { Water water = new Water();// Producer t1 = new Producer(water);// Consumer t2 = new Consumer(water);// t1.start();// t2.start(); Producer t1 = new Producer(water); Consumer t2 = new Consumer(water); new Thread(t1).start(); new Thread(t2).start(); }}class Water{ boolean water = false; public boolean isWater() { return water; } public void setWater(boolean water) { this.water = water; } public boolean isEmpty(){ return water ? false:true; }}//生产者class Producer implements Runnable{ Water water; public Producer(Water water) { this.water = water; } @Override public void run() { System.out.println("开始进水..."); for(int i = 0;i<=5;i++){ try { Thread.sleep(1000); System.out.println("Producer进水"+i); } catch (Exception e) { e.printStackTrace(); } } water.setWater(true); synchronized (water) { water.notify(); } }}//消费者//class Consumer extends Threadclass Consumer implements Runnable{ Water water; public Consumer(Water water) { this.water = water; } @Override public void run() { System.out.println("排水启动..."); if (water.isEmpty()) { synchronized (water) { try { System.out.println("水塘无水..等待中"); water.wait(); } catch (Exception e) { e.printStackTrace(); } } } System.out.println("开始排水:"); for(int i = 0 ;i<=5;i++){ try { Thread.sleep(1000); System.out.println(""+i+"分钟"); } catch (InterruptedException e) { e.printStackTrace(); } } }}
相信经过这个小示例,理解起来会更加容易。
0 0
- Java简单的生产者与消费者实现
- 简单的生产者消费者模式java实现
- Java实现生产者与消费者的同步
- Java 实现生产者与消费者
- Java实现生产者与消费者
- java实现生产者与消费者
- java实现生产者与消费者
- java实现生产者与消费者
- java生产者消费者的实现
- 生产者-消费者的java实现
- 生产者消费者的java实现
- JAVA生产者消费者的实现
- wait与notifyAll实现简单的生产者消费者模式
- 关于消费者.生产者,缓冲区的简单java实现
- java:一个生产者消费者模式的简单实现
- Java实现 简单的多线程“生产者-消费者”问题
- java 编码实现简单的生产者-消费者模式
- java多线程之生产者与消费者问题的简单模拟
- 常见的进程调度算法
- 文章标题 UVA 12299 : RMQ with Shifts(线段树+点修改)
- TensorFlow 官方文档中文版解读之1 ——tf.concat的用法的用法
- android View绘制流程与机制
- The sum problem
- Java简单的生产者与消费者实现
- 定位设备--llseek实现
- vfork不是用return返回的原因
- 配置hadoop环境
- PAT甲级练习1084. Broken Keyboard (20)
- javascript常用函数和技巧
- Struts2分页
- Java基础之I/O框架体系
- Android源码编译常见错误(持续更新)