生产者消费者模式Java实现
2016-09-16 16:04
246 查看
//storage类用来生产和消费
import java.util.LinkedList; public class Storage { private final int MAX_SIZE=100; private LinkedList<Object> list=new LinkedList<Object>(); public void produce(int num){ synchronized (list) { while(list.size()+num>MAX_SIZE){ try { list.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } for(int i=0;i<num;i++){ list.add(new Object()); } list.notifyAll(); } } public void consume(int num){ synchronized (list) { while(list.size()<num){ try { list.wait(); } catch (InterruptedException e) { e.printStackTrace(); } for(int i=0;i<num;i++){ list.remove(); } } list.notifyAll(); } } }
//Producer类
public class Producer extends Thread { private int num; private Storage storage; public Producer(Storage storage,int num) { this.num = num; this.storage = storage; } @Override public void run() { storage.produce(num); } }
//Consumer类
public class Consumer extends Thread{ private int num; private Storage storage; public Consumer(Storage storage,int num) { this.num = num; this.storage = storage; } @Override public void run() { storage.consume(num); } }//测试类Main
public class Main { public static void main(String[] args) { Storage storage=new Storage(); Producer producer = new Producer(storage,8); Producer producer2 = new Producer(storage,5); Producer producer3 = new Producer(storage,3); Consumer consumer = new Consumer(storage,10); producer.start(); consumer.start(); producer2.start(); } }
相关文章推荐
- java:一个生产者消费者模式的简单实现
- 生产者消费者模式Java实现
- JAVA多线程(五)用lock、synchronized、阻塞队列三种方法实现生产者消费者模式
- java实现生产者消费者模式
- Java设计模式—生产者消费者模式(阻塞队列实现)
- java中自动实现生产者消费者模式的队列
- 生产者消费者模式-Java实现
- 生产者消费者模式的一种java实现
- Java设计模式—生产者消费者模式(阻塞队列实现)
- 生产者消费者模式java代码实现和理解
- 生产者消费者模式的java实现(实现一)
- Java多线程实现生产者消费者模式
- java 多线程并发系列之 生产者消费者模式的两种实现
- JAVA多线程(三)生产者消费者模式及实现方法
- java 多线程实现生产者消费者模式
- Java生产者消费者模式实现
- 生产者消费者模式的java实现(实现四)
- Java设计模式—生产者消费者模式(阻塞队列实现)
- Java Executor并发框架(十四)Executor框架线程池使用原始方式实现生产者消费者模式
- 设计模式之生产者消费者模式的多种实现方式(java)