Java-公平锁与非公平锁

2020-01-06  本文已影响0人  小小的coder

公平锁(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

上一篇下一篇

猜你喜欢

热点阅读