在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方法中使用该锁来实现同步访问临界区代码。当多个线程尝试获取锁时,公平锁会按照线程的请求顺序来获取锁,确保所有线程都有机会获取到锁,从而实现公平性。