Java锁的优化

Java在JDK1.6后对锁进行了优化,引进了偏向锁,轻量锁等。


为啥会有偏向锁,就是作者认为,虽然你写了synchronized,但是实际上大多数情况下,你这段synchronized只会有一个线程去访问,那我就没必要每次你访问的时候都去同步,多累啊我

也就是说偏向锁升级为轻量锁的依据,是第二个线程访问时,第一个线程已经拿到这个偏向锁,且还在使用这个锁(我理解这个使用的意思是还在锁的范围内,没离开锁,因为如果已经离开锁了,第二个线程就可以将对象恢复成无锁状态,然后后让这个对象的锁偏向我这个线程)这时候有冲突偏向锁无法解决,只能升级为轻量锁(轻量锁的解决方法就是让第二个线程自旋,等第一个线程)


轻量锁升级为重量锁的依据就是,线程数超过2个,在竞争同一把锁时,就会升级为重量锁,原因就是如果太多线程竞争同一把锁,那除了持有锁的那个线程,其它线程全都是在那自旋,这样就影响性能了,本来轻量锁就是想提高性能的,现在反而影响了,所以干脆升级为重量锁,没持有锁的线程全堵塞去。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值