概念
<mark>公平锁是指多个线程按照申请锁的顺序来获取锁,采用先来后到哦,先来先服务的原则。老的线程排队使用锁,新线程仍然排队使用锁。</mark>
<mark>非公平锁多个线程按照上来就直接尝试占有锁,如果尝试失败就采用类似公平锁的方式。老的线程排队使用锁,但是无法保证新线程抢占已经在排队的线程的锁。</mark>
非公平锁的优点在于吞吐量比公平锁大。
并发包ReentrantLock的创建可以指定构造函数的boolean类型来得到公平锁或者非公平锁 默认是非公平锁
实例
我们经常使用到的锁是ReentrantLock
我们可以查看它的源码,默认使用的是非公平锁。
也就是说ReentrantLock
可自定义使用的是公平还是非公平锁,默认使用的是非公平锁。
对于synchronized而言 也是一种非公平锁.
网友评论