并发——锁升级(偏向锁,轻量级锁,重量级锁,及常见锁)

锁升级

原因:为了减少获得锁和释放锁带来的性能消耗,所以有了升级锁

流程:
无锁状态—偏向锁(jvm配置是否开启)----轻量级锁----重量级锁(不可逆,只要成为重量级,释放锁就一直是重量级)

常见锁

  • 偏向锁:首先进入的线程,就被标记为偏向锁。如果有其他线程竞争。偏向锁就会升级为轻量级锁

  • 轻量级锁:等待的进程不进入阻塞队列,自旋状态(消耗cpu,实现就是CAS),一直在查看是否有空位。当线程激烈(自旋线程多)就会升级为重量级锁
    速度快,但消耗大

  • 重量级锁:等待的进程进入阻塞队列,通知有空位,出阻塞队列争抢位置(需要维护阻塞队列)会引起上下文切换 速度在相对较慢 消耗减小

  • 乐观锁(CAS):每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。
    cas操作需要输入两个值,一个旧值,一个是新值,操作期间先比较旧值有没有变化,没有变化更新新值,放生变化不交换

  • 悲观锁 :synchronized是悲观锁,这种线程一旦得到锁,其他需要锁的线程就挂起的情况就是悲观锁。

  • 对象锁 : 所有方法加锁 就是在对象上加锁 只有执行完一个才能执行别的 (面试点)不加锁的方法没影响(只要有一个方法没加锁 就不是对象锁) 对象锁只能影响同一对象的 new两对象就没影响

  • 静态锁(类锁 在锁前加static): 只有前一个释放才能执行下一个 静态锁能影响静态锁 只有锁相同才能互相影响 必须锁方法 锁住变量不是整个类锁

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值