jvm 锁Lock
2024-09-29 08:29:59
自旋锁
线程想要获得一个对象的锁,如果没有得到,会继承占用CPU尝试获取锁, 线程不进入阻塞状态,仍然在Running
锁消除
public void lockTest() { String aa = "ABC";
synchronized (aa) {
System.out.println(aa);
}
}
对于局部变量,没有必要加锁, 运行时JIT进行逃逸分析会自动去掉monitorenter monitorexit. javap -v反编译看不出来
锁粗化
String aa = "ABC"; public void lockTest() { for (int i = 0; i < 10000; i++) {
synchronized (aa) {
System.out.println(aa);
}
}
}
循环中频繁加锁释放锁, 会被JIT优化成
String aa = "ABC"; public void lockTest() {
synchronized (aa) {
for (int i = 0; i < 10000; i++) {
System.out.println(aa);
}
}
}
最新文章
- NPOI 格式设置2—时间,千分位,繁体,小数位
- jQuery演示10种不同的切换图片列表动画效果
- MRD
- 2014 Super Training #8 C An Easy Game --DP
- MVC权限验证之ActionFilterAttribute
- J2EE MyBatis使用
- vyos (三) HA
- Android 使用系统的Activity播放音频文件 intent
- #if和#ifdef区别
- MySQL集群(四)之keepalived实现mysql双主高可用
- 2018/2/13 ElasticSearch学习笔记三 自动映射以及创建自动映射模版,ElasticSearch聚合查询
- GMA Round 1 最大值
- python 游戏(船只寻宝)
- 为网卡配置多个IP地址(windows)
- mysql基础拓扑图
- PDF文件分割和合并
- OpenACC 《大规模并行处理器编程实战》教材讲解
- PAT 1047 编程团体赛(代码)
- AngularJS 笔记系列(四)控制器和表达式
- Python基础:面向对象基础 (一) 类及其属性和魔法方法