java源码 - ReentrantLock之NonfairSync
开篇 NonfairSync和FairSync相比而言,多了一次抢占机会,其他处理逻辑几乎是一模一样。 NonfairSync的tryAcquire的操作流程中如果发现当前锁未被占用那么立即抢占锁。 FairSync的tryAcquire的操作流程中如果发现当前锁未被还需要继续判断当前线程否是头结点才能发起锁抢占java源码 - ReentrantLockjava源码 - ReentrantLock之FairSyncjava源码 - ReentrantLock之NonfairSyncjava源码 - ReentrantLock图解加锁过程 加锁过程 ReentrantLock的的锁过程如下: 1、先尝试获取锁,通过tryAcquire()实现。 2、获取锁失败后,线程被包装成Node对象后添加到CLH队列,通过addWaiter()实现。 3、添加CLH队列后,逐步的去执行CLH队列的线程,如果当前线程获取到了锁,则返回;否则,当前线程进行休眠,直到唤醒并重新获取锁了才返回。 public void lock() { sync.lock(); } static final class...