JAVA 线程间通信 -生产者消费者JDK5.0升级版
2013-03-11 19:25
162 查看
//仅作为学习笔记
/* JDK1.5中提供了多线程升级解决方案 将同步Synchronized替换成现实Lock操作 将Object中的wait,notify, notifyAll,替换成了Condition对象 该对象可以是Lock锁,进行获取 */ import java.util.concurrent.locks.*; class Res { private int count=0; private String name; private boolean flag = false; private Lock lock = new ReentrantLock();//申请锁 private Condition condition_pro = lock.newCondition();//控制生产者的 唤醒和等待 private Condition condition_con = lock.newCondition();//控制消费者的 唤醒和等待 public void set(String name)throws InterruptedException { lock.lock();//上锁 try { while(flag) condition_pro.await();//生产者等待 this.name = name+ " "+ (++count); System.out.println(Thread.currentThread().getName() + "--生产者--" + this.name); flag = true; condition_con.signal();//消费者唤醒 } finally { lock.unlock();//解锁 } } public void out()throws InterruptedException { lock.lock(); try { while(!flag) condition_con.await(); System.out.println(Thread.currentThread().getName() + "--消费者----" + this.name); flag = false; condition_pro.signal(); } finally { lock.unlock(); } } } class Producer implements Runnable { Res r = new Res(); Producer(Res r) { this.r = r; } public void run() { while(true) try { r.set("商品"); } catch(InterruptedException e) {} } } class Consumer implements Runnable { Res r = new Res(); Consumer(Res r) { this.r = r; } public void run() { while(true) try { r.out(); } catch(InterruptedException e) {} } } class TestDemo { public static void main(String []args) { Res r = new Res(); Producer p = new Producer(r); Consumer c = new Consumer(r); Thread t1 = new Thread(p); Thread t2 = new Thread(c); Thread t3 = new Thread(p); Thread t4 = new Thread(c); t1.start(); t2.start(); t3.start(); t4.start(); } }
相关文章推荐
- Java基础学习__多线程(线程间通信--生产者消费者JDK5.0升级版)
- JAVA 线程间通信 -生产者消费者JDK5.0升级版
- JAVA 线程间通信 -生产者消费者JDK5.0升级版
- java多线程:线程间的通信-生产者和消费者(三)
- 【Java】线程wait() notify()通信 实现生产者 消费者问题
- 黑马程序员_Java基础_线程间通信,生产者消费者案例,jdk1.5锁机制,守护线程
- 线程通信,生产者消费者问题(Java)
- java线程通信 生产者与消费者模式
- java多线程线程通信——生产者和消费者
- Java线程间通信问题分析(生产者消费者模型)
- Java基础复习:线程通信—生产者消费者改进
- Thinking in Java---线程通信+三种方式实现生产者消费者问题
- JAVA学习笔记(1)_____模拟线程通信之生产者消费者问题
- java线程间通信:生产者--消费者
- java多线程同步以及线程间通信详解&消费者生产者模式&死锁&Thread.join()(多线程编程之二)
- (九)Java入门--多线程(5)线程通信--多生产者多消费者
- JAVA 线程间通信 - 生产者与消费者
- Java 多线程(二)线程间的通信应用--生产者消费者(未完)
- Java基础学习6_多线程(线程间通信--生产者消费者)
- Java线程通信练习之“生产者/消费者问题”