sychronized 的自旋锁、 偏向锁、 轻量级锁、 重量级锁, 分别介绍和联系

自旋锁: 果持有锁的线程能在很短时间内释放锁资源, 那么那些等待竞争锁的线程就不
需要做内核态和用户态之间的切换进入阻塞挂起状态, 它们只需要等一等( 自旋) ,
等持有锁的线程释放锁后即可立即获取锁, 这样就避免用户线程和内核的切换的消耗。
偏向锁: 顾名思义, 它会偏向于第一个访问锁的线程, 如果在运行过程中, 同步锁只
有一个线程访问, 不存在多线程争用的情况, 则线程是不需要触发同步的, 减少加锁/ 解

的一些 CAS 操作( 比如等待队列的一些 CAS 操作) , 这种情况下, 就会给线程加一个
偏向锁。 如果在运行过程中, 遇到了其他线程抢占锁, 则持有偏向锁的线程会被挂起,
JVM 会
消除它身上的偏向锁, 将锁恢复到标准的轻量级锁。
轻量级锁: 轻量级锁是由偏向所升级来的, 偏向锁运行在一个线程进入同步块的情况
下, 当第二个线程加入锁争用的时候, 偏向锁就会升级为轻量级锁;
重量级锁: 我们知道, 我们要进入一个同步、 线程安全的方法时, 是需要先获得这个
方法的锁的, 退出这个方法时, 则会释放锁。 如果获取不到这个锁的话, 意味着有别的线
程在
执行这个方法, 这时我们就会马上进入阻塞的状态, 等待那个持有锁的线程释放锁,
然后再把我们从阻塞的状态唤醒, 我们再去获取这个方法的锁。 这种获取不到锁就马上进
入阻
塞状态的锁, 我们称之为重量级锁。
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值