只唤醒对方
来源:互联网 发布:2016淘宝美工有前途吗 编辑:程序博客网 时间:2024/05/28 16:11
package comm;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class ProducerConsumerDemo2 { public static void main(String[] args) { Resource r = new Resource(); Producer pro = new Producer(r); Consumer con = new Consumer(r); Thread t1 = new Thread(pro); Thread t2 = new Thread(pro); Thread t3 = new Thread(con); Thread t4 = new Thread(con); t1.start(); t2.start(); t3.start(); t4.start(); }}class Resource { private String name; private int count = 1; 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() + "==producer==" + 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() + "====consumer====" + this.name); flag = false; condition_pro.signal(); // 唤醒对方 } finally { lock.unlock(); } }}class Producer implements Runnable { private Resource res; Producer(Resource res) { this.res = res; } public void run() { while (true) { try { res.set("+商品+"); } catch (InterruptedException e) { } } }}class Consumer implements Runnable { private Resource res; Consumer(Resource res) { this.res = res; } public void run() { while (true) try { res.out(); } catch (InterruptedException e) { } }}
0 0
- 只唤醒对方
- jdk 1.5升级提供只唤醒对方对象方法
- 只为对方考虑的心
- 扎克伯格的“招聘经”:我只招我也愿意为对方工作的人
- 只知道QQ号怎么能查到对方与他好友的聊天内容
- 只知道对方的微信号码可以查看微信聊天记录吗
- 对方规定
- 爱上对方
- 爱上对方
- 爱上对方
- 啊个让对方
- 对方更好
- 对方答复
- 对方水电费
- 对方是否
- 奋斗告诉对方告诉对方
- 知道对方手机号码如何才能查找对方通话记录
- 爱对方,并给对方自由
- 四元数介绍
- Linux伙伴系统(五)--通过迁移类型分组来实现反碎片
- c++ map 根据值的顺序返回排好的键值数组
- C static 函数与变量
- Maven War包 POM配置文件 设置最佳实践
- 只唤醒对方
- 项目数据库连接关闭问题
- Linux信号(signal) 机制分析
- iOS中Bitcode的介绍及配置
- Linux高端内存映射(下)
- 写给自己
- 关于VS2010工程各种路径注意事项汇总
- ios 面试
- 双系统重装windows后引导修复