码迷,mamicode.com
首页 > 其他好文 > 详细

锁的优化

时间:2018-08-12 12:16:04      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:操作   java虚拟机   线程   存在   资源竞争   申请   一个   对象锁   上下文   

锁粗化

  虚拟机遇到一连串连续的对同一锁不断的进行请求和释放的操作,把所有的锁操作整合成对锁的一次请求

synchronized (lock){
                    for(int i=0;i<20;i++){
                        // do sth
                    }
                }

锁偏向

如果一个线程获得锁,那么就进入偏向模式,下次再次请求锁时,无须进行同步操作,节省了锁申请的时间,对于锁竞争比较激烈的场合不佳,这样会导致偏向模式失效

JAVA虚拟机参数 -XX:+UseBiasedLocking开启

轻量级锁

把对象头部作为指针,指向持有锁线程的内部堆栈,来判断线程是否持有对象锁

子旋锁

当前线程暂时无法获得锁,本应该挂起,但是虚拟机进行一次赌博,CPU循环几次(空循环),如果可以得到锁,那么进入临界区,如果不能,进行挂起

锁消除

Java虚拟机在JIT编译时,通过上下文的扫描,去除不可能存在共享资源竞争的锁,比如使用了StringBuffer Vector

 

锁的优化

标签:操作   java虚拟机   线程   存在   资源竞争   申请   一个   对象锁   上下文   

原文地址:https://www.cnblogs.com/bockpecehhe/p/9305884.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!