ReentrantLock进行上锁的流程如下图所示,我们将按照下面的流程分析ReentrantLock上锁的流程。

先进入ReentrantLock.lock方法。

再进入内部类NonfairSync的lock方法。

点击acquire方法进入AbstractQueuedSynchronizer.acquire方法。


进入tryAcquire方法回到ReentrantLock.nonfairTryAcquire方法。


再看另一个条件acquireQueued(addWaiter(Node.EXCLUSIVE)。AbstractQueuedSynchronizer.addWaiter方法将当前线程放入阻塞队列中。

之后它会从队列中不断请求获取线程,直到获取为止。




















