美文网首页
Java-公平锁与非公平锁

Java-公平锁与非公平锁

作者: 小小的coder | 来源:发表于2020-01-06 10:33 被阅读0次

    公平锁(Fair):加锁前检查是否有排队等待的线程,优先排队等待的线程,先来先得
    非公平锁(Nonfair):加锁时不考虑排队等待问题,直接尝试获取锁,获取不到自动到队尾等待

    非公平锁性能比公平锁高5~10倍,因为公平锁需要在多核的情况下维护一个队列

    首先Java中的ReentrantLock 默认的lock()方法采用的是非公平锁。

    下面代码 isFair先设置为true

    20161125150808605.png 20161125150546634.png

    这个时候你会发现打印是有序的,排队在前面的线程直接获取锁。这就是公平锁

    20161125150835963.png

    当把true改成false之后,线程3先进来,却发现被线程4获得锁了,这就是非公平锁
    ————————————————
    原文链接:https://blog.csdn.net/IsResultXaL/article/details/53334750

    相关文章

      网友评论

          本文标题:Java-公平锁与非公平锁

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