synchronized 和 ReentrantLock 该用哪个?
来源:互联网 发布:数据脱敏公司 编辑:程序博客网 时间:2024/04/28 01:17
Jdk 1.5
关于synchronized和ReentrantLock的性能问题,Brian Goetz对这两种锁在JDK 1.5与单核处理器,以及JDK 1.5与双Xeon处理器环境下做了一组吞吐量对比的实验 [1] ,实验结果如图13-1和图13-2所示。
JDK 1.5、单核处理器下两种锁的吞吐量对比
所以在 jdk 1.5 中,Synchronized 在多线程环境下性能下降严重,所以选择 ReentrantLock 。
Jdk 1.6
JDK 1.6中加入了很多针对锁的优化措施,如自旋锁、轻量级锁、偏向锁。synchronized与ReentrantLock的性能基本上是完全持平了。所以性能不是考虑该用哪个的因素。功能才是。
总结:
虚拟机在未来的性能改进中肯定也会更加偏向于原生的synchronized,毕竟是关键字,亲生的,所以还是synchronized能实现需求的情况下,优先考虑使用synchronized来进行同步。而且 synchronized 不用考锁释放的问题,更易写出安全的代码。
阅读全文
0 0
- synchronized 和 ReentrantLock 该用哪个?
- synchronized和ReentrantLock到底使用哪个?
- synchronized 和 ReentrantLock 区别
- ReentrantLock 和 Synchronized对比
- Synchronized和ReentrantLock
- ReentrantLock 和 Synchronized
- ReentrantLock 和 synchronized
- synchronized和ReentrantLock区别
- ReentrantLock和synchronized比较
- synchronized和ReentrantLock介绍
- ReentrantLock,Synchronized 和 Atomic
- synchronized和ReentrantLock区别
- synchronized和ReentrantLock区别
- reentrantlock 和 synchronized 区别
- ReentrantLock 和 Synchronized对比
- synchronized和reentrantlock比较
- ReentrantLock和Synchronized对比
- synchronized和ReentrantLock
- SpringMVC
- ssh整合开发中的分页方案(Srtuts2+Spring+Hibernate)
- ViewStub的小例子
- myBatis大于1000的in查询解决办法
- oracle中常见函数
- synchronized 和 ReentrantLock 该用哪个?
- 《Python基础教程》读书笔记(3)之第8章异常(关键词:Python/异常/try/except/finally)
- Linux驱动的并发处理--锁机制
- warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
- cocos2d-x lua 播放视频,VideoPlayer在Android和IOS下的坑,
- Map.Entry
- 用JavaScript获取XML中的数据
- MyBatis sqlMapper.xml 传入String类型参数报错,invalid comparison: java.util.LinkedHashMap and java.lang.Strin
- Linux驱动并发处理---信号量