首页 > 代码库 > 生产者消费者模式
生产者消费者模式
生产者消费者模式见上图所示。
blog宗旨:用图说话。
代码示例:
package com.huan; public class ProduceConsumer { public static void main(String[] args) { Middleware middleware = new Middleware(); new Thread(new Producer(middleware)).start(); new Thread(new Consumer(middleware)).start(); } } class Producer implements Runnable{ private Middleware middleware; public Producer(Middleware middleware){ this.middleware = middleware; } public void produce() throws Exception{ while(true){ middleware.put(); } } @Override public void run() { try { produce(); } catch (Exception e) { e.printStackTrace(); } } } class Consumer implements Runnable{ private Middleware middleware; public Consumer(Middleware middleware){ this.middleware = middleware; } public void consume() throws Exception{ while(true){ middleware.get(); } } @Override public void run() { try { consume(); } catch (Exception e) { e.printStackTrace(); } } } class Middleware{ private static final int MAX_SIZE = 10; private int[] storage = new int[MAX_SIZE]; private int index = 0; public synchronized void put() throws Exception{ if(index == MAX_SIZE){ wait(); } storage[index] = index; System.out.println("生产了:" + index); index++; notify(); } public synchronized void get() throws Exception{ if(index == 0){ wait(); } index--; System.out.println("消费了:" + storage[index]); notify(); } }
代码缺陷:当多个消费者时,或者多个生产者时,上例代码需要完善。
生产者消费者模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。