ReentranLock公平锁代码 ReentrantLock lock = new ReentrantLock(true); // true:公平锁 lock.lock(); try { // todo } finally { lock.unlock(); } 初始化构造函数入参,选择是否为初始化公平锁。 其实一般情况下并不需要公平锁,除非你的场景中需要保证顺序性。 使用 ReentrantLock 切记需要在 finally 中关闭,lock.unlock()。 公平锁和非公平锁的选择 public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync(); } 构造函数中选择公平锁(FairSync)、非公平锁(NonfairSync)。 hasQueuedPredecessors() static final class FairSync extends Sync { protected final boolean tryAcquire(int acquires) { final Thread current = Thread.currentThread(); int c = getState(); if (c == 0) { if (!hasQueuedPredecessors() &a