多生产者和多消费者
来源:互联网 发布:汽车保养提醒软件 编辑:程序博客网 时间:2024/05/02 04:37
public class Test{public static void main(String[] args){Basket b = new Basket(5);Producer p1 = new Producer(b);Consumer s1 = new Consumer(b);new Thread(p1,"生产者1").start();new Thread(s1,"消费者1").start();new Thread(p1,"生产者2").start();new Thread(s1,"消费者2").start();new Thread(p1,"生产者3").start();new Thread(s1,"消费者3").start();new Thread(s1,"消费者4").start();}}class Apple{int id;Apple(int id){this.id = id;}}class Basket{Apple[] valume;int index = 0;Basket(int val){valume = new Apple[val];}synchronized void put(Apple a){while(index == valume.length){try{this.wait();}catch (InterruptedException e){e.printStackTrace();}}this.notifyAll();valume[index]= a;index ++;}synchronized Apple get(){while(index == 0){try{this.wait();}catch (InterruptedException e){e.printStackTrace();}}this.notifyAll();index --;return valume[index];}}class Producer implements Runnable{Basket b;Apple a;int count = 0;boolean flag = true;Producer(Basket b){this.b = b;}public void run(){while(flag){if(count == 100){return;}synchronized (this){count++;System.out.println(Thread.currentThread().getName() + ":++++++++" + "put a apple,count = "+ count);}b.put(new Apple(0));try{Thread.sleep(1000);}catch (InterruptedException e){e.printStackTrace();}}}}class Consumer implements Runnable{Basket b;Apple a;String lock = new String("lock");int count = 0;boolean flag = true;Consumer(Basket b){this.b = b;}public void run(){while(flag){if(count == 100){return;}synchronized(lock){count++;System.out.println(Thread.currentThread().getName() + ":"+"get a apple,outcount = "+ count);}a = b.get();try{Thread.sleep(500);}catch (InterruptedException e){e.printStackTrace();}}}}
0 0
- 多生产者和多消费者
- 多生产者和多消费者
- 多生产者和多消费者---Java程序
- 多生产者和多消费者等待唤醒
- java多生产者消费者
- 单生产者 多消费者
- 生产者消费者模型(多个生产者和多个消费者)JDK1.5之前实现版
- 生产者消费者模型(多个生产者和多个消费者)JDK1.5 (Lock&Condition)实现版
- 生产者消费者模型[多生产者-多消费者模式]
- lock和lockfree ringbuffer之多生产者和多消费者
- Disruptor多生产者、多消费者
- 多生产者多消费者实例
- 多生产者多消费者问题
- 单生产者-多消费者/CountDownLatch
- 多缓冲区--生产者-消费者问题
- 生产者消费者多缓冲区实现
- java 用多线程实现多生产者和多消费者模式
- Java多线程六:生产者和消费者模型(多对多)
- maven findbugs插件集成
- EditText控件中的inputType的属性值详情
- 2011年华为编程大赛B卷第二道题
- 《CSS权威指南》--附录
- 淘金网UCskype客服系统
- 多生产者和多消费者
- linux线程间通信之信号量
- 读书的意义—献给第19个世界读书日
- 11
- “准公公”恋上“亲家母”胁迫其同床14年被杀
- oracle数据迁移到 mysql
- Triangle
- 11
- 谈谈从PC端到移动端的产品设计差异