在Java中实现公平锁可以使用ReentrantLock类的构造函数来指定公平性。在构造ReentrantLock对象时,可以传入一个boolean类型的参数来指定公平性,如果参数为true则表示锁是公平的,如果参数为false则表示锁是非公平的。
import java.util.concurrent.locks.ReentrantLock; public class FairLockExample { private ReentrantLock fairLock = new ReentrantLock(true); public void doSomething() { fairLock.lock(); try { // 临界区代码 } finally { fairLock.unlock(); } } }
在上面的例子中,创建了一个ReentrantLock对象fairLock并设置为公平锁,然后在doSomething方法中使用该锁来实现同步访问临界区代码。当多个线程尝试获取锁时,公平锁会按照线程的请求顺序来获取锁,确保所有线程都有机会获取到锁,从而实现公平性。