JAVA 线程间通信 -生产者消费者JDK5.0升级版
来源:互联网 发布:windows命令打war包 编辑:程序博客网 时间:2024/04/28 10:05
//仅作为学习笔记
/*JDK1.5中提供了多线程升级解决方案将同步Synchronized替换成现实Lock操作将Object中的wait,notify, notifyAll,替换成了Condition对象该对象可以是Lock锁,进行获取*/import java.util.concurrent.locks.*;class Res{private int count=0;private String name;privateboolean 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 jdk5.0生产者消费者升级版
- 【java多线程】【生产者与消费者】【JDK5.0升级版】
- JAVA 线程间通信 - 生产者与消费者
- JAVA 线程间通信 - 生产者与消费者
- java线程间通信:生产者--消费者
- JAVA线程间通信(生产者消费者)
- java线程通信-生产者消费者
- 线程间通信-生产者消费者
- java基础12:线程间通信---生产者消费者问题
- java多线程-线程间通信_生产者消费者
- JAVA多线程-线程间通信(二)-生产者/消费者模式实现
- Java多线程编程3--线程间通信--生产者/消费者模式
- Java线程间的相互通信--生产者消费者问题
- Java线程间通信问题分析(生产者消费者模型)
- Java多线程之线程间通信--生产者/消费者模式
- Android ScrollView与ListView,GridView共存冲突解决方案
- Myeclipse添加mybatis generator插件
- 算法二:计算1-3000 等于p1*p1*p2的数,其中p1!=p2且都是质数
- Oracle 10g-windows默认服务
- sql 定义变量,使用变量
- JAVA 线程间通信 -生产者消费者JDK5.0升级版
- 从 ISO 镜像文件启动 Ubuntu 11.04
- jvm垃圾回收
- Oracle 11g-windows默认服务
- 九度OJ 教程31 包含结构体的优先队列及运算符重载之《搬水果》
- uva 11300 - Spreading the Wealth
- iframe高度自适应的简单实现
- SQL Server Performance Dashboard Reports
- ibatis 错误