生产者消费者模式
来源:互联网 发布:宇宙追缉令 知乎 编辑:程序博客网 时间:2024/06/05 14:48
描述:模式生产者负责生产资源例如粮食,消费者负责消费资源,当仓库资源为空时,消费者进入等待状态,生产者继续生产资源;当仓库资源大于某个容量时,生产者停止生产,进入等待状态,消费者继续消费资源。
测试程序如下:
package com.java.createconsume;public class LibResource {private int number;public synchronized void createResource(){while(number >= 10){try {wait();} catch (InterruptedException e) {e.printStackTrace();}}number++;System.out.println("生产者生成资源:" + number);notify();}public synchronized void ConsumeResource(){while(number <= 0){try {wait();} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("消费者消费资源:" + number--);notify();}}
package com.java.createconsume;public class ConsumeRunnable implements Runnable{private LibResource resource;public ConsumeRunnable(LibResource resource) {this.resource = resource;}@Overridepublic void run() {while(true){try {Thread.sleep((long)Math.random() * 1000);} catch (InterruptedException e) {e.printStackTrace();}resource.ConsumeResource();//resource.notify();}}}
package com.java.createconsume;public class CreateRunnable implements Runnable{private LibResource resource;public CreateRunnable(LibResource resource) {this.resource = resource;}@Overridepublic void run() {while(true){try {Thread.sleep((long)Math.random() * 1000);} catch (InterruptedException e) {e.printStackTrace();}resource.createResource();//resource.notify();}}}
package com.java.createconsume;public class CreateConsumeTest {public static void main(String[] args) {System.out.println("测试生产者消费者模式!");LibResource libResource = new LibResource();CreateRunnable createRunnable = new CreateRunnable(libResource);ConsumeRunnable consumeRunnable = new ConsumeRunnable(libResource);Thread createThread = new Thread(createRunnable);Thread consumeThread = new Thread(consumeRunnable);createThread.start();consumeThread.start();}}
Console结果:
消费者消费资源:2
生产者生成资源:2
消费者消费资源:2
生产者生成资源:2
消费者消费资源:2
生产者生成资源:2
消费者消费资源:2
生产者生成资源:2
消费者消费资源:2
生产者生成资源:2
消费者消费资源:2
生产者生成资源:2
消费者消费资源:2
生产者生成资源:2
消费者消费资源:2
生产者生成资源:2
消费者消费资源:2
生产者生成资源:2
消费者消费资源:2
生产者生成资源:2
消费者消费资源:2
生产者生成资源:2
消费者消费资源:2
生产者生成资源:2
生产者生成资源:3
消费者消费资源:3
生产者生成资源:3
消费者消费资源:3
生产者生成资源:3
消费者消费资源:3
生产者生成资源:3
消费者消费资源:3
生产者生成资源:3
消费者消费资源:3
生产者生成资源:3
消费者消费资源:3
生产者生成资源:3
消费者消费资源:3
生产者生成资源:3
消费者消费资源:3
生产者生成资源:3
消费者消费资源:3
生产者生成资源:3
消费者消费资源:3
生产者生成资源:3
消费者消费资源:3
0 0
- 生产者—消费者模式
- 生产者-消费者模式
- 消费者与生产者模式
- 消费者与生产者模式
- 消费者与生产者模式
- 生产者消费者模式浅析
- 生产者消费者模式
- 生产者/消费者模式
- 生产者/消费者模式
- 生产者-消费者模式
- 【转】生产者消费者模式
- 生产者、消费者模式
- 生产者/消费者模式
- 生产者/消费者模式
- 生产者/消费者模式(转载)
- 生产者消费者模式浅析
- 生产者消费者模式浅析
- 生产者消费者模式
- windows下查找端口占用问题
- Java enum的用法详解
- D
- 机器学习总结(十):常用聚类算法(Kmeans、密度聚类、层次聚类)及常见问题
- 解决Select下拉列表的高度
- 生产者消费者模式
- Android Studio杂七杂八的使用记录
- 【数组和字符串】3.3最长回文串
- 图的基本概念
- mac 下 lavarev数据库服务启动不了
- echarts 柱状图 如何添加点击事件
- Localization and Object Detection
- 房卡牛牛 丹东牛牛组件
- SDL 加载显示JPEG图片