Java 中lock和synchronized关键词的区别
来源:互联网 发布:p2p网贷数据 编辑:程序博客网 时间:2024/04/30 06:34
lock和synchronized的不同:
synchronized获得锁和释放的方式都是在块结构中,当获取多个锁的时候必须以相反的顺序释放,并且是自动解锁。
Lock是JDK1.5以后引进的,它相比synchronized关键词要更灵活,可用范围更广泛。
用法:
我们来看一个计数器的例子来比较这两者的不同:
1. synchronized
1
2
3
4
5
6
7
8
9
10
11
publicclassCounter {
privateintcount =0;
publicintinc() {
synchronized(this) {
return++count;
}
}
}
//加了synchronized关键词后,count每次在块中只能被同一个进程加数。
//我们再来看下使用 Lock是如何实现的
2. Lock
1
2
3
4
5
6
7
8
9
10
11
publicclassCounter {
privateLock lock =newLock();
privateintcount =0;
publicintinc() {
lock.lock();
intnewCount = ++count;
lock.unlock();
returnnewCount;
}
}
//从调用Lock方法之后lock的实例就被锁定,直道被调用unlock才解锁。
性能比较:
下面是在我电脑上跑出的结果:
Threads
1x
synch
1x
Lock
1x
AtomicInteger
2x
synch
2x
Lock
2x
AtomicInteger
1
1.797
2.175
0.947
3.246
4.111
1.703
2
8.685
4.134
1.889
13.144
4.901
1.949
4
7.942
3.040
1.735
13.182
4.960
1.945
8
7.648
3.011
1.894
13.287
4.979
1.951
16
8.017
2.974
1.735
13.040
4.573
1.950
32
7.908
2.958
1.777
13.059
4.845
1.958
64
7.853
2.972
1.878
13.316
5.004
1.954
从结果上看,当线程数越多时Lock的效率越高。
- Java 中lock和synchronized关键词的区别
- Java 中lock和synchronized关键词的区别
- java中synchronized和lock的区别
- Java中Lock和Synchronized的区别
- Java中Synchronized和Lock的区别
- Java中Synchronized和Lock的使用和区别
- Java中Synchronized和Lock的使用和区别
- Java中LOCK和synchronized区别
- Java多线程中 synchronized和Lock的区别
- java多线程中 synchronized和Lock的区别
- Java多线程中Synchronized和Lock的区别
- Java多线程中 synchronized和Lock的区别
- java多线程中 synchronized 和 Lock的区别
- Java同步关键词synchronized和Lock接口
- Java中synchronized与lock的区别
- Java中synchronized与lock的区别
- Java中Synchronized和Lock的使用
- Java中Synchronized和Lock的使用
- ESXI 5.0 虚拟机的网络适配器兼容性列表,选择虚拟机的网络适配器
- RTTI、虚函数和虚基类的开销分析及使用指导
- JMS ActiveMQ
- Maven的安装、配置及使用入门
- Word页码从正文开始-请务必文档格式要规范,这在你未来的工作中的细节是很重要的
- Java 中lock和synchronized关键词的区别
- 一致性哈希算法及其在分布式系统中的应用
- Spring MVC POST中文乱码解决方案
- VS2013调试中如何看函数的上一级的调用
- VI命令使用(查找替换)
- cloudstack 安装
- python装饰器
- 修练8年C++面向对象程序设计之体会
- Hibernate3注解的使用