【设计模式】java生产者和消费者的代码实例
2013-07-30 23:50
756 查看
生产者和消费者设计模式代码实例:
产品库和get/set方法:
消费者线程:
生产者线程:
产品:
主线程:
产品库和get/set方法:
class SyncStack { int index = 0; WoTou[] wt = new WoTou[5]; public synchronized void push(WoTou w) { while(index == 5) //生产的数量控制,产品库存满了则等待消费 { try { wait(); }catch(InterruptedException e) { e.printStackTrace(); } this.notifyAll(); } wt[index] = w; //开始生产 System.out.println(Thread.currentThread().getName() +"生产了" + wt[index] +"号馒头"); index++; this.notifyAll(); //通知等待的消费者消费 } public synchronized void pop() { while(index == 0) //如果产品库中没有产品,则等待产品生产出来 { try { //System.out.println("consumer wait"); wait(); } catch(Exception e) { e.printStackTrace(); } notifyAll(); } index--; System.out.println(Thread.currentThread().getName() + "消费了第" + wt[index] + "个馒头"); } }
消费者线程:
class Consumer implements Runnable { SyncStack s = null; public Consumer(SyncStack s) { this.s = s; } public void run() { for(int i = 1; i<=10; ++i) { s.pop(); try { Thread.sleep(1000); } catch(InterruptedException e) { e.printStackTrace(); } } } }
生产者线程:
class Producer implements Runnable { SyncStack s = null; public Producer(SyncStack s) { this.s = s; } public void run() { for(int i = 1; i<=10; ++i) { s.push(new WoTou(i)); try { Thread.sleep(1000); } catch(InterruptedException e) { e.printStackTrace(); } } } }
产品:
class WoTou{ int id = 0; WoTou(int id) { this.id = id; } public String toString() { return "" + id; } }
主线程:
public class ProducerConsumer { public static void main(String[ ] args) throws Exception { SyncStack s = new SyncStack(); Consumer c1 = new Consumer(s); Producer p1 = new Producer(s); new Thread(c1).start(); //启动消费者线程 new Thread(p1).start(); //启动生产者线程 } }
相关文章推荐
- Java多线程之并发协作生产者消费者设计模式JDK1.5.0+升级优化版
- Java多线程之并发协作生产者消费者设计模式
- Java多线程Thread-并发协作(生产者消费者设计模式)
- 简单Java代码实例助你通俗易懂的理解什么是装饰(者)设计模式 (Decorator)
- Java多线程之并发协作生产者消费者设计模式
- java生产者消费者实例代码
- Java多线程设计(四)生产者/消费者模式
- JAVA生产者与消费者模式 BlockingQueue与ExecutorService实例
- 【设计模式】java单实例模式代码示例
- Java多线程之并发协作生产者消费者设计模式
- java中多线程通信实例:生产者消费者模式
- Java多线程之并发协作生产者消费者设计模式
- 设计模式-生产者与消费者Java实现
- Java多线程之并发协作生产者消费者设计模式
- 详解Java设计模式中的生产-消费者模式及代码实现
- Java程序性能优化 读书笔记(十四)并行设计模式:生产者-消费者模式
- Java多线程之并发协作生产者消费者设计模式
- Java设计模式之装饰者模式详解和代码实例
- java中用一个MyNumber类充当“生产者—消费者”模式的缓冲池实例
- Java多线程(十九):并发协作生产者消费者设计模式