公平锁与非公平锁

锁的分类

在这里插入图片描述

什么是公平 与 非公平

  • 公平是按照线程的请求顺序,来分配锁 非公平是指不完全按照请求的顺序,在一定情况下,可以插队的

注意:非公平也同样不提倡 插队行为,这里的非公平是指在合适的时机插队,而不是盲目的插队

为什么要有非公平锁

  • ava设计者 这样设计的目的,是为了提高效率
    避免唤醒带来的空档期

公平的情况 ReentrantLock

如果创建 ReentrantLock对象时,参数填写为 true ,那么这就是个公平锁 依次执行
在这里插入图片描述

在这里插入图片描述

  • 我们可以看下ReentrantLock 源码 官方的解释是当为true的时候 就是公平策略
    是个三母运算符 为 true则新建个 FairSync()方法
    在这里插入图片描述

  • ync object for fair locks 公平锁的同步对象 方法继承了 extends Sync

  • 并且 在 if判断中,他会先获取下排队的线程

不公平的情况 ReentrantLock

线程1 获取锁,释放锁,线程2在排队等待获取锁,但是线程5 突然插队拿到锁,这就是非公平锁,线程2还没来得及获取锁,

ReentrantLock 默认的就是非公平策略
通过源码可以发现

在这里插入图片描述
三目 默认走的是false ,非公平锁策略
在这里插入图片描述
在这里插入图片描述

  • 公平锁不同的是 ,他不会获取正在排队的线程

对比公平锁,非公平锁的优点和缺点

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值