用Java实现生产者消费者问题
2012-09-18 18:40
246 查看
package javaTest; //测试类 public class ProCon{ public static void main(String[] args){ SyncQueue queue = new SyncQueue(); Consumer p = new Consumer(queue); Producer c = new Producer(queue); new Thread(p).start(); new Thread(c).start(); } } //生产者 class Producer implements Runnable{ private SyncQueue queue; private int count = 0; public Producer(SyncQueue queue){ this.queue = queue; } public void run(){ while(true){ String product = "产品"+count; queue.put(product); count++; System.out.println("生产了: "+product); try{ Thread.sleep(2000); }catch(InterruptedException e){ e.printStackTrace(); } } } } //消费者 class Consumer implements Runnable{ private SyncQueue queue; public Consumer(SyncQueue queue) { this.queue = queue; } public void run(){ while(true){ String product = queue.get(); System.out.println("消费了: "+product); try{ Thread.sleep(2000); }catch(InterruptedException e){ e.printStackTrace(); } } } } //公共缓冲区 class SyncQueue{ private String[] queue = new String[10]; private int index = 0; //生产者把产品放入队列 public synchronized void put(String productor){ if(index == queue.length){ try{ wait(); }catch(InterruptedException e){ e.printStackTrace(); } } queue[index] = productor; index++; //唤醒在此对象监视器上等待的消费者线程 notify(); } //消费者从队列中取出一个产品消费 public synchronized String get(){ if(index == 0){ try{ wait(); }catch (InterruptedException e){ e.printStackTrace(); } } index--; String product = queue[index]; //唤醒在此对象监视器上等待的生产者线程 notify(); return product; } }
本文转自 :/article/2736861.html
相关文章推荐
- 生产者消费者问题的java实现
- 生产者与消费者问题,java实现
- 生产者与消费者问题Java实现
- java生产者和消费者问题之售票实现方法
- java多线程实现生产者与消费者---经典问题
- 课程设计——利用信号量实现生产者-消费者问题(java)
- 用JAVA实现多线程(生产者与消费者问题)
- Java实现生产者消费者问题
- Thinking in Java---线程通信+三种方式实现生产者消费者问题
- 生产者消费者问题理解与Java实现
- 生产者/消费者问题的多种Java实现方式
- java模拟实现生产者---消费者问题
- java实现生产者和消费者问题的几种方式
- java实现生产者消费者问题
- 生产者/消费者问题的多种Java实现方式
- 生产者/消费者问题的多种Java实现方式
- 经典线程同步问题(生产者&消费者)--Java实现
- 生产者/消费者问题的多种Java实现方式
- java线程:三种方式实现生产者消费者问题_2
- Java 线程实现生产者和消费者问题