美文网首页
公平锁和非公平锁

公平锁和非公平锁

作者: 迷糊小生 | 来源:发表于2019-04-02 21:13 被阅读0次

公平锁表示线程获取锁的顺序是按照线程加锁的顺序来分配的,即先来先得的FIDO先进先出顺序.

非公平锁就是一种获取锁的抢占机制,是随机获得锁的.

public class DemoService {

    private Lock lock;

    public DemoService(Boolean isFair) {
        this.lock = new ReentrantLock(isFair);
    }

    public void print() {
        lock.lock();
        try {
            System.out.println("ThreadName=" + Thread.currentThread().getName() + "锁定");
        } finally {
            lock.unlock();
        }

    }
}
public class Test {
    public static void main(String[] args) {
        DemoService service = new DemoService(true);

        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                System.out.println("Thread:" + Thread.currentThread().getName());
                service.print();
            }
        };

        Thread[] thread = new Thread[10];
        for (int i = 0; i < 10; i++) {
            thread[i] = new Thread(runnable);
        }
        for (int i = 0; i < 10; i++) {
            thread[i].start();
        }
    }
}
image.png

打印的结果基本呈有序状态,这就是公平锁的特点。

将Test类中的ture改为false就变成了非公平锁了:


image.png

非公平锁运行结果基本是乱序的,说明先start的线程不一定先获得锁。

相关文章

  • 聊聊Java中的那些锁

    说到Java中锁的分类,有很多种。本文就来聊聊公平锁、非公平锁、可重入锁、独占锁、共享锁和自旋锁。 一、公平锁和非...

  • 公平锁和非公平锁-ReentrantLock是如何实现公平、非公

    1、什么是公平锁与非公平锁 公平锁:公平锁就是保障了多线程下各线程获取锁的顺序,先到的线程优先获取锁。非公平锁:非...

  • 多线程并发编程

    Wait/NotifyAll标准使用 锁的特性/分类 公平、非公平锁 可重入锁 排他、非排他锁 Synchroni...

  • java并发-独占锁与共享锁,公平锁与非公平锁,重入锁与非重入锁

    java并发-乐观锁与悲观锁,独占锁与共享锁,公平锁与非公平锁,重入锁与非重入锁 java 中的锁 -- 偏向锁、...

  • JUC源码走读

    一、公平锁和非公平锁 非公平锁的源码: 可以看到非公平锁的lock,上来就先尝试获取锁。compareAndSet...

  • [转载]# 公平锁,非公平锁,乐观锁,悲观锁 公平锁/非公平锁(多线程执行顺序的维度) 概念理解 公平锁:加锁前先...

  • ReentrantLock-jdk1.8

    ReentrantLock分为公平锁和非公平锁,默认的为非公平锁 可以手动指定 先从非公平锁讲起 1 lock 首...

  • Java锁有哪些种类

    一 公平锁和非公平锁 公平锁:多个线程按照申请锁的顺序来获取锁 非公平锁:多个线程获取锁的顺序并不是按照申请锁的顺...

  • AbstractQueuedSynchronizer- 独占锁实

    1-ReentrantLock ReentrantLock是独占锁,而且内部可以是公平锁,非公平锁;公平锁:公平锁...

  • 锁 - 公平 vs 非公平

    公平锁 非公平锁 公平锁 典型的公平锁:ReentrantLock(true) 多个线程按照申请锁的顺序来获取锁。...

网友评论

      本文标题:公平锁和非公平锁

      本文链接:https://www.haomeiwen.com/subject/bntwbqtx.html