张老师:Condition多路例子
来源:互联网 发布:服装行业进销存软件 编辑:程序博客网 时间:2024/05/16 08:52
简介
Lock的作用就相当于synchronized,使用Lock就不需要使用synchronized,相反同理。
使用synchronized时等待和唤醒使用的是object.await()和object.notify();
使用Lock时使用等待和唤醒使用的是condition.await()和condition.signal();
Lock和synchronized的区别在于前者可以实现多路Condition,而后者不能有多个object,不能实现多路
使用synchronized时等待和唤醒使用的是object.await()和object.notify();
使用Lock时使用等待和唤醒使用的是condition.await()和condition.signal();
Lock和synchronized的区别在于前者可以实现多路Condition,而后者不能有多个object,不能实现多路
例子
import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 阻塞队列 * 采用多路Condition * @author liujun */public class BoundedBuffer {/**锁*/final Lock lock = new ReentrantLock();/**通知满条件*/final Condition notFull = lock.newCondition();/**通知空条件*/final Condition notEmpty = lock.newCondition();/**阻塞队列数组对象*/final Object[] items = new Object[100];/**放下标,取下标和当前队列元素个数*/int putIndex , takeIndex, count;public void put(Object element) throws Exception {lock.lock();try {while(count == items.length){//队列已满notFull.await();//队列满等待}//存放数据items[putIndex] = element;if (++putIndex == items.length){putIndex = 0;}count ++;//唤醒空等待notEmpty.signal();} finally {lock.unlock();}}public Object take() throws Exception {lock.lock();Object value = null;try {while(count == 0) {//队列为空notEmpty.await(); //队列空等待}//取出数据value = items[takeIndex];if (++takeIndex == items.length) {takeIndex = 0;}count --;//唤醒满等待notFull.signal();return value;} finally {lock.unlock();}}}
0 0
- 张老师:Condition多路例子
- 又见张老师
- 张老师的生日?
- 张老师的期待
- 见到了张老师~~
- 张老师,您走好!
- 张老师,一路走好
- 张老师交通灯
- 张老师银行项目
- 张龙老师教程
- 张老师交通灯分析
- Wait Condition 例子
- Condition 很好的例子
- 《科学研究方法与实践》——张路老师
- 多张图片切换javascript例子
- 张龙老师的忠告
- 张老师:java读写锁
- 主键共享方式和外键方式一对一双向关系映射(参考张龙老师的例子)
- 第一个deeplearning4jproject跑起
- (转)Eclipse 下找不到或无法加载主类的解决办法
- PyCharm使用技巧记录(一)如何查看变量
- 到底该如何入门Keras、Theano呢?(浅谈)
- Keras如何构造简单的CNN网络
- 张老师:Condition多路例子
- PyCharm如何设置显示行号?
- Python/Keras如何将给定的数据集打乱
- Python如何进行cross validation training
- 数据结构 顺序串的各种基本运算
- Python常用函数
- Vistual Studio中常用快捷键
- Flex 布局教程:语法篇
- Python如何读取指定文件夹下的所有图像