Java中的鎖機制,常見的有樂觀鎖和悲觀鎖。樂觀鎖認為數據不會產生沖突,一般采用版本號機制;悲觀鎖則認為數據容易產生沖突,一般采用加鎖機制。
樂觀鎖示例代碼:
public class OptimisticLock {
private int count; // 初始值為0
public synchronized void increment() {
int temp = count;
try {
// 模擬業務處理時間
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
count = temp + 1;
}
}
悲觀鎖示例代碼:
public class PessimisticLock {
private int count; // 初始值為0
public void increment() {
synchronized (this) { // 對于整個方法進行加鎖
int temp = count;
try {
// 模擬業務處理時間
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
count = temp + 1;
}
}
}