synchronized锁的升级过程

1:请讲一下synchronized锁的升级过程
答:无锁 --> 偏向锁 --> 轻量级锁 --> 重量级锁
偏向锁:只有一个线程争抢锁资源的时候,将线程拥有者标识为当前线程。
轻量级锁(自旋锁):一个或多个线程通过CAS去争抢锁,如果抢不到则一直自旋。
重量级锁:多个线程争抢锁,向内核申请锁资源,将未争抢成功的锁放到队列中直接阻塞。

2:什么情况下偏向锁才会升级为轻量级锁
答:只有一个线程的时候就是偏向锁(当偏向锁开启的时候,偏向锁默认开启);当争抢的线程超过一个,升级为轻量级锁。其实轻量级锁就适用于那种执行任务很短的线程,可能通过一两次自旋,就能够获取到锁。

3.什么时候轻量级锁才会升级为重量级锁
答:当自旋的线程循环超过10次,或者线程等待的数量超过cpu的1/2,升级为重量级锁。

4.开启偏向锁一定比轻量级锁高效吗
答:不一定,比如在一开始已经知道某个资源就需要被多个线程争抢,此时就不需要开启偏向锁,因为偏向锁给了标识之后,还需要取消这个标识,重新抢锁,比如在JVM中,偏向锁默认是延迟4秒才开始的,因为JVM在启动的时候需要多个线程竞争资源,并且这个都是一开始知道的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二次觉醒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值