4.1.4ReentrantLock与Condition代替wait/notify
来源:互联网 发布:e宠商城和淘宝哪个靠谱 编辑:程序博客网 时间:2024/06/05 07:36
package demo;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * Created by sunyifeng on 17/10/18. */public class MyService { private Lock lock = new ReentrantLock(); private Condition condition = lock.newCondition(); public void await() { try { lock.lock(); System.out.println("开始等待的时间为:" + System.currentTimeMillis()); condition.await(); // FIXME:等同于wait } catch (InterruptedException e) { e.printStackTrace(); } finally { lock.unlock(); System.out.println("锁释放了"); } } public void signal(){ try { lock.lock(); System.out.println("开始通知的时间为:" + System.currentTimeMillis()); condition.signal(); // FIXME:等同于notify } finally { lock.unlock(); } }}
package demo;/** * Created by sunyifeng on 17/10/18. */public class MyThread extends Thread { private MyService myService; public MyThread(MyService myService) { super(); this.myService = myService; } @Override public void run() { super.run(); myService.await(); }}
package demo;/** * Created by sunyifeng on 17/10/18. */public class Run { public static void main(String[] args) throws InterruptedException { MyService myService = new MyService(); MyThread threadA = new MyThread(myService); threadA.start(); Thread.sleep(3000); myService.signal(); }}
运行结果:开始等待的时间为:1508298403673
开始通知的时间为:1508298406678
锁释放了
程序分析:
1、程序没有使用synchronize/wait()/notify()等方法,使用了JDK1.5中的ReentrantLock/Condition对象;
2、有更好的灵活性,可以实现多路通知、有选择性的进行线程通知。
阅读全文
0 0
- 4.1.4ReentrantLock与Condition代替wait/notify
- Condition 与wait和notify
- java并发-Condition与Object.wait()、Object.notify()
- java.util.concurrent中的Condition与wait/notify区别
- JAVA之wait¬ify&Condition
- wait、notify、notifyAll和Condition
- java线程通讯——使用Lock和Condition代替synchronized 和 wait, notify notifyAll()
- ReenTrantLock与Condition
- ReentrantLock与Condition
- ReentrantLock与Condition
- ReentrantLock与Condition
- synchronized VS Lock, wait-notify VS Condition
- 多线程练习-synochronized-notify/wait-lock/condition
- java并发锁机制-ReentrantLock Condtion准备篇之Object.wait,Object.notify与Condtion
- ReentrantLock与Condition结合使用
- 【Java多线程】ReentrantLock与Condition
- synchronized 中的wait/notify 与 Condition 中的await/single的区别
- wait()与notify()
- ScreenToViewportPoint,WorldToViewportPoint,ViewportToWorldPoint
- 【转载】Node Process API介绍
- MaxCompute执行作业慢的原因排查
- STM32CubeMX 生成的LWIP 调试问题
- 数据库的备份与还原
- 4.1.4ReentrantLock与Condition代替wait/notify
- CONSTRUCT2
- VIM工具的使用(三)
- 分布式通信的几种方式
- 关于IjkVideoView或Android VideoView seekTo不精确问题
- sql中给表起别名问题
- pdf转CAD如何快速转换
- 希尔排序c语言实现
- 记一次神奇的nginx-502问题