Reentrolock 如何实现公平锁
时间: 2024-04-11 08:32:01 浏览: 14
在ReentrantLock中,通过构造函数的参数来指定是否使用公平锁。如果使用公平锁,则ReentrantLock会尽量按照获取锁的顺序来分配锁资源。
具体实现上,ReentrantLock内部维护了一个FIFO(先进先出)的等待队列,当多个线程尝试获取锁时,如果锁已经被占用,则当前线程会被加入到等待队列的末尾。当锁的持有者释放锁时,会从等待队列中选择队头的线程来获取锁资源。
通过这种方式,ReentrantLock能够实现公平的锁分配,即保证线程按照申请锁的顺序获取锁资源,避免某些线程长时间等待而无法获取到锁的情况。但需要注意的是,公平锁的实现会带来额外的性能开销,因此在某些场景下,选择非公平锁可能更为高效。