生产者消费者模式

xiaoxiao2021-02-28  97

描述:模式生产者负责生产资源例如粮食,消费者负责消费资源,当仓库资源为空时,消费者进入等待状态,生产者继续生产资源;当仓库资源大于某个容量时,生产者停止生产,进入等待状态,消费者继续消费资源。

测试程序如下:

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; } @Override public 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; } @Override public 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

转载请注明原文地址: https://www.6miu.com/read-48796.html

最新回复(0)