在Java中,悲觀鎖的實現方式有兩種:
示例代碼:
public class LockExample {
private int count = 0;
public synchronized void increment() {
count++;
}
}
示例代碼:
import java.util.concurrent.locks.ReentrantLock;
public class LockExample {
private int count = 0;
private ReentrantLock lock = new ReentrantLock();
public void increment() {
lock.lock();
try {
count++;
} finally {
lock.unlock();
}
}
}
這兩種方式都是悲觀鎖的實現方式,因為它們都假設會出現并發沖突,因此在訪問共享資源之前先獲取鎖,并阻塞其他線程的訪問。與之相反,樂觀鎖則是假設不會出現并發沖突,直接進行操作,并在提交時檢查是否有其他線程修改了數據。