Java中公平锁和非公平锁各自的特点

16 篇文章 0 订阅
8 篇文章 0 订阅

公平锁

公平锁对于线程来说是先请求先调度执行,即FIFO队列,队列头部第一个线程永远先执行,系统吞吐量较低.
例如Java中的ReentrantLock默认是非公平锁,可以通过参数改为公平锁,.
在这里插入图片描述

FairSync()实现类公平锁
在这里插入图片描述

非公平锁

非公平锁见名知意,并不是线程先请求就会先被执行,底层是采用某种机制可能是优先权抢占,短线程抢占,来抢锁,好处就是提高了系统的吞吐量,其中短线程抢占算法可能会导致长线程得不到执行产生"饥饿"现象,不过可以采用"老化技术"来解决饥饿问题.
例如Java中ReentrantLock默认就是非公平锁,还有synchronized也是非公平锁
在这里插入图片描述

总结

至于使用什么锁,是需要看使用场景,如果只需要性能吞吐量高并发,使用非公平锁即可,牺牲小我成就大我.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值