ReentrantLock还是synchronized?
来源:互联网 发布:淘宝店铺流量突然下降 编辑:程序博客网 时间:2024/05/23 00:34
与目前的 synchronized 实现相比,争用下的 ReentrantLock 实现更具可伸缩性。(在未来的 JVM 版本中,synchronized 的争用性能很有可能会获得提高。)这意味着当许多线程都在争用同一个锁时,使用 ReentrantLock 的总体开支通常要比 synchronized 少得多。
清单 1. 用 ReentrantLock 保护代码块。
Lock lock = new ReentrantLock();lock.lock();try { //相应业务操作}finally { lock.unlock(); }
建议用 synchronized 开发,直到确实证明 synchronized 不合适
class LoanTask{static String LOAN_STATUS = "LOAN_STATUS";}class BorrowTask{public Object getLock() {return LoanTask.LOAN_STATUS;}Object lock = getLock();synchronized (lock) {lock.notifyAll();//必须先跟synchronized配合使用}}
参考示例程序:lock与unlock
回过头来再来看看JDK 5.0的ReentrantLock类,它完全实现了synchronized语义上的全部功能,并且还能具备诸如条件锁、锁超时、公平锁等等更优越的特性(特别值得一提的是tryLock的功能也实现了,就是说可以判定假如这个时间获取锁是否能够成功),甚至在并发量居高不下时,性能还更加优越……我不禁要问,用一个Java实现的锁类去从功能上代替一个已有的同步关键字,这岂不是Java自己在抽自己嘴巴?
0 0
- ReentrantLock还是synchronized?
- synchronized 和 ReentrantLock 区别
- ReentrantLock与synchronized比较
- ReentrantLock 和 Synchronized对比
- synchronized ReentrantLock 线程安全
- Synchronized和ReentrantLock
- ReentrantReadWriteLock & ReentrantLock & Synchronized 区别
- ReentrantLock 和 Synchronized
- ReentrantLock -synchronized 对比
- ReentrantLock 和 synchronized
- reentrantlock与synchronized
- synchronized和ReentrantLock区别
- synchronized与reentrantLock区别
- java ReentrantLock与synchronized
- Synchronized与ReentrantLock
- ReentrantLock和synchronized比较
- synchronized和ReentrantLock介绍
- ReentrantLock与synchronized
- webservice接口实现数据共享的实现的初步解决方案(更新、删除)
- iOS学习之iOS沙盒(sandbox)机制和文件操作
- 《Java源码分析》:HashSet
- hdu 5734 Acperience(2016 Multi-University Training Contest 2——化简公式,数学推导)
- POJ3641-Pseudoprime numbers
- ReentrantLock还是synchronized?
- Android 使用RxJava+Retrofit +Realm 组合加载数据 <读取缓存 显示 请求网络数据 缓存最新数据 更新界面>(二)
- 一个千万量级的APP使用的一些第三方库
- 使用无符号右移-&-栈 实现 十进制转十六进制
- nginx配置
- 站在巨人的肩膀上学习
- poj1062 昂贵的聘礼 (最短路)
- python去掉字符串中空格的方法
- 数字特征值-week3-C语言习题集