Java多线程之生产者消费者2
来源:互联网 发布:淘货源软件下载 编辑:程序博客网 时间:2024/06/16 19:16
0.前文
synchronized 类所写的生产者消费者demo请参见我的文章:
http://blog.csdn.net/caicongyang/article/details/50411958
1.本实例讲诉Lock类API
package com.ccy.thread.demo;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;class ProducerConsumerDemo2 {public static void main(String[] args) {Resource2 r = new Resource2();Producer2 pro = new Producer2(r);Consumer2 con = new Consumer2(r);Thread t3 = new Thread(con);Thread t4 = new Thread(con);new Thread(pro).start();new Thread(pro).start();t3.start();t4.start();}}/*JDK1.5 中提供了多线程升级解决方案。将同步Synchronized替换成现实Lock操作。将Object中的wait,notify notifyAll,替换了Condition对象。该对象可以Lock锁 进行获取。该示例中,实现了本方只唤醒对方操作。Lock:替代了Synchronizedlock unlocknewCondition()Condition:替代了Object wait notify notifyAllawait();signal();signalAll();*/class Resource2{private String name;private int count = 4;private boolean flag = false; private Lock lock = new ReentrantLock();private Condition con_pro = lock.newCondition();private Condition con_con = lock.newCondition();public void set(String name){lock.lock();try{while(flag){con_pro.await();}this.name = name+"--"+count++;System.out.println(Thread.currentThread().getName()+"...生产者.."+this.name);flag = true;con_con.signal();}catch(Exception e){e.printStackTrace();}finally{lock.unlock();}}// t3 t4 public void out(){lock.lock();try{while(!flag){<span style="white-space:pre"></span>con_con.await();}System.out.println(Thread.currentThread().getName()+"...消费者........."+this.name);flag = false;con_pro.signal();}catch(Exception e){e.printStackTrace();}finally{lock.unlock();}}}class Producer2 extends Thread{private Resource2 res;Producer2(Resource2 res){this.res = res;}public void run(){while(true){res.set("+生产商品+");}}}class Consumer2 implements Runnable{private Resource2 res;Consumer2(Resource2 res){this.res = res;}public void run(){while(true){res.out();}}}
后记:
因为在一个包内做了多次练习,所以讲类名写成Consumer2等,仅适用于学习和练习
更多多线程精彩内容请继续关注我的博客:http://blog.csdn.net/caicongyang
记录与分享,你我共成长 -from caicongyang
1 0
- Java多线程之生产者消费者2
- [Java]多线程之生产者消费者
- java多线程之生产者消费者
- Java多线程之生产者消费者
- Java 多线程之生产者消费者
- java多线程之生产者消费者队列
- java多线程之生产者消费者队列
- java多线程之消费者生产者模式
- java多线程之生产者消费者经典问题
- Java多线程之消费者生产者模式
- java多线程之生产者消费者问题
- JAVA 多线程之生产者与消费者
- Java多线程之生产者与消费者
- 多线程编程之生产者消费者(java实现)
- java多线程之消费者生产者模式
- java多线程之消费者生产者模式
- java多线程之消费者生产者模式
- 【java多线程之】生产者消费者示例
- Zbar library for iphone 5 (armv7s)
- 做自己想做的工作,你也可以!
- jbpm6.1.0 jbpm-console
- centos5.5配置网络连接(阿和整理)
- countUp.js 数字动画
- Java多线程之生产者消费者2
- 自定义列表li项目符号
- 杭电OJ tree(并查集)
- Centos 7网络配置
- Qt学习之路(1)
- Struts2上传文件最大尺寸设置
- android图片操作之 Matrix
- MySQL的事务级别测试
- centos的软件安装方法rpm和yum