Java——》公平锁、非公平锁

推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Redis】
    总结——》【Kafka】
    总结——》【Spring】
    总结——》【SpringBoot】
    总结——》【MyBatis、MyBatis-Plus】
    总结——》【Linux】
    总结——》【MongoDB】
    总结——》【Elasticsearch】

Java——》公平锁、非公平锁

  • 一、概念
  • 二、分类
  • 三、非公平锁的优点
  • 四、非公平锁的缺点

一、概念

锁类型 特点 描述
公平锁 排队竞争锁 线程A获取到了锁资源,线程B没有拿到,线程B去排队,线程C来了,直接排到线程B的后面,等待B拿到锁资源或者是B取消后,才可以尝试去竞争锁资源。
非公平锁 先插队竞争锁,如果不成功再排队竞争锁 线程A获取到了锁资源,线程B没有拿到,线程B去排队,线程C来了,先尝试竞争锁资源
- 成功拿到锁资源:开心,插队成功。
- 没有拿到锁资源:依然要排到线程B的后面,等待B拿到锁资源或者是B取消后,才可以尝试去竞争锁资源。

二、分类

锁类型 描述
synchronized 只有非公平锁
ReentrantLock 有公平锁 & 非公平锁
ReentrantReadWriteLock 有公平锁 & 非公平锁

三、非公平锁的优点

每当锁被释放后,任何一个线程都有机会竞争到锁,有效提高执行性能

四、非公平锁的缺点

可能会产生线程饥饿现象。

你可能感兴趣的:(Java,java,公平锁,非公平锁,synchronized,ReentrantLock)