跳至主要內容

公平锁、非公平锁

zheng小于 1 分钟java基础

1、概念:

    公平锁:加锁前先查看是否有排队等待的线程,有的话优先处理排在前面的线程,先来先得。
    公平所:线程加锁时直接尝试获取锁,获取不到就自动到队尾等待。

    更多的是直接使用非公平锁:非公平锁比公平锁性能高5-10倍,因为公平锁需要在多核情况下维护一个队列,如果当前线程不是队列的第一个无法获取锁,增加了线程切换次数。

    原理 : https://www.cnblogs.com/little-fly/p/10365109.html

    https://www.jianshu.com/p/06340f8feb05

2、Java语言中:

公平和非公平锁的队列都基于锁内部维护的一个双向链表,表结点Node的值就是每一个请求当前锁的线程。

两者的区别:https://www.jianshu.com/p/c7d17b5c6be3
上次编辑于:
贡献者: 郑天祺