自旋锁

线程想要获得一个对象的锁,如果没有得到,会继承占用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);
}
}
}

最新文章

  1. NPOI 格式设置2—时间,千分位,繁体,小数位
  2. jQuery演示10种不同的切换图片列表动画效果
  3. MRD
  4. 2014 Super Training #8 C An Easy Game --DP
  5. MVC权限验证之ActionFilterAttribute
  6. J2EE MyBatis使用
  7. vyos (三) HA
  8. Android 使用系统的Activity播放音频文件 intent
  9. #if和#ifdef区别
  10. MySQL集群(四)之keepalived实现mysql双主高可用
  11. 2018/2/13 ElasticSearch学习笔记三 自动映射以及创建自动映射模版,ElasticSearch聚合查询
  12. GMA Round 1 最大值
  13. python 游戏(船只寻宝)
  14. 为网卡配置多个IP地址(windows)
  15. mysql基础拓扑图
  16. PDF文件分割和合并
  17. OpenACC 《大规模并行处理器编程实战》教材讲解
  18. PAT 1047 编程团体赛(代码)
  19. AngularJS 笔记系列(四)控制器和表达式
  20. Python基础:面向对象基础 (一) 类及其属性和魔法方法

热门文章

  1. P1731 生日蛋糕
  2. POJ1442:Black Box
  3. bzoj 2632 [ neerc 2011 ] Gcd guessing game —— 贪心
  4. 实用的原生js图片轮播
  5. HDOJ1024(最大M子段和)
  6. Netty组件
  7. 使用雅虎YUI Compressor压缩JS过程心得记录
  8. mysql数据库之表与表之间的关系
  9. HttpApplication 对象的创建过程及HttpModule过滤器的内部实现过程
  10. [matlab]机器学习及SVM工具箱学习笔记