lock和condition
来源:互联网 发布:小火牛是什么软件 编辑:程序博客网 时间:2024/06/05 20:33
转载来自:http://luan.iteye.com/blog/1849712
1、jdk1.5之前用synchornized和voatile来控制共享对象的并发访问,jdk5.0提供了ReentrantLock。
2、Lock和ReentrantLock:
Lock接口里定义了一些抽象的锁操作,有无条件、可轮询、定时、可中断的锁获取操作,ReentrantLock实现了Lock接口,获得ReetrantLock的锁与进入synchronized代码块有相同的内存语义,释放ReentrantLock锁和退出sychronized代码块有相同的内存语义。
从上面可以看出,Lock提供了不同形式获取锁方式,而之前通过synchronied修饰代码块的时候,如果有一个线程已经获取对象锁,其他线程访问共享对象的时候就必须无限等待,等待当前线程释放对象锁后再去进行竞争,不能中断那些等待获取锁的线程,而Lock提供了一些其他方法,比如tryLock():如果当前锁可用则获取并返回true,如果不可用则返回false。在方法前加上while(true)就可以实现轮询获取锁。
jdk5.0提供了Condition,通过lock.newCondition()可以获得绑定当前锁的条件对象,每个条件对象都维护相对于自己这个条件的线程等待池,比如队列非空,可以创建一个Condition not_empty = lock.newCondition(); 当take的时候如果队列为空,则not_empty.await(),这样当前线程由这个条件对象来维护,当队列非空的时候就可以通过调用not_empty.sigal()来唤醒那些需要取元素的线程。这样就能把各种线程在不同条件下进行细致分类,灵活操作。不用像之前那样直接用个notifyAll,使用notifyAll把不同条件需求的线程全绑定在一个队列中,一个条件满足就需要唤醒全部线程,然后相互竞争锁,既不精确性能也差 0 0
- lock和condition
- 黑马程序员---Lock和Condition
- java并发---lock和condition
- Lock-Condition
- Lock & Condition
- Lock、Condition
- Lock & condition
- Lock和Condition实现线程同步通信
- 多线程中使用Lock和Condition机制
- Lock和Condition实现线程同步通信
- Python的Lock和condition使用
- java Lock和Condition的用法
- java多线程-07-Lock和Condition
- Lock和Condition实现线程同步通信
- java多线程通信之lock和Condition
- 多线程(4)- Lock和Condition
- Lock和Condition对象的使用
- java 线程通信Lock和condition接口
- TextRank算法提取关键词的Java实现
- 自然语言处理中的N-Gram模型详解
- python_笔记13_装饰器
- 欢迎使用CSDN-markdown编辑器
- denyhosts防暴力破解安装(linux)
- lock和condition
- 【Raspberry Pi 3试用体验】+ngrok 内网穿透
- 关于map和list
- 位域与大小端
- jsp:include html文件乱码的解决办法
- Linux 下安装MySQL
- 高斯模糊的算法(高斯权重)
- LeetCode 121. Best Time to Buy and Sell Stock
- 边界值分析