锁的分类

4 篇文章 0 订阅
3 篇文章 0 订阅

在这里插入图片描述
自旋锁:就是不断地通过循环来试图获取锁,避免上下文切换的巨大代价。某些临界区操作仅仅是修改或者读取某个值,操作时间很短。

在不是很严格的意义上可以认为:
悲观锁 = 操作系统互斥锁,关开中断实现 = 重量级锁
乐观锁 = 自旋锁,CAS实现 = 轻量级锁 (自适应自旋锁可以控制轮询的次数或者时间,超过就阻塞了)
偏向锁 = 压根没有锁

Java中有三种锁,偏向锁,轻量级锁和重量级锁
当然Java中还存在读写锁,读写锁的实现方式暂时不明。
可重入锁:当前获取锁的线程可以再次获取锁
公平锁:加锁前先查看是否有排队等待的线程,有的话优先处理排在前面的线程,先来先得。

关于更细粒度的锁是不是会导致性能下降的问题
1.更细粒度的锁几乎一定能引起并发性能的上升。
2.对于单线程程序性能的影响:
如果取消了大锁之后,加上细粒度的锁太多,会导致性能下降,如python中的GIL。
但是像mysql那样,当从表级锁切换到行级锁,依然只有一个锁的时候,个人认为不会导致单线程程序的性能下降。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值