在Java中實現(xiàn)公平鎖可以使用ReentrantLock類的構(gòu)造函數(shù)來指定公平性。在構(gòu)造ReentrantLock對象時,可以傳入一個boolean類型的參數(shù)來指定公平性,如果參數(shù)為true則表示鎖是公平的,如果參數(shù)為false則表示鎖是非公平的。
import java.util.concurrent.locks.ReentrantLock;
public class FairLockExample {
private ReentrantLock fairLock = new ReentrantLock(true);
public void doSomething() {
fairLock.lock();
try {
// 臨界區(qū)代碼
} finally {
fairLock.unlock();
}
}
}
在上面的例子中,創(chuàng)建了一個ReentrantLock對象fairLock并設(shè)置為公平鎖,然后在doSomething方法中使用該鎖來實現(xiàn)同步訪問臨界區(qū)代碼。當(dāng)多個線程嘗試獲取鎖時,公平鎖會按照線程的請求順序來獲取鎖,確保所有線程都有機(jī)會獲取到鎖,從而實現(xiàn)公平性。