生产者消费者模式

来源:互联网 发布:宇宙追缉令 知乎 编辑:程序博客网 时间: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
原创粉丝点击