公平锁与非公平锁
锁的分类
什么是公平 与 非公平
公平是按照线程的请求顺序,来分配锁 非公平是指不完全按照请求的顺序,在一定情况下,可以插队的
注意:非公平也同样不提倡 插队行为,这里的非公平是指在合适的时机插队,而不是盲目的插队
为什么要有非公平锁
Java设计者 这样设计的目的,是为了提高效率
避免唤醒带来的空档期
公平的情况 ReentrantLock
如果创建 ReentrantLock对象时,参数填写为 true ,那么这就是个公平锁 依次执行
不公平的情况 ReentrantLock
线程1 获取锁,释放锁,线程2在排队等待获取锁,但是线程5 突然插队拿到锁,这就是非公平锁,线程2还没来得及获取锁,
ReentrantLock 默认的就是非公平策略