import java.util.concurrent.atomic.AtomicReference;
public class MyOptimisticLockExample {
static class Data {
int value;
int version;
Data(int value, int version) {
this.value = value;
this.version = version;
}
}
AtomicReference<Data> atomicRef = new AtomicReference<>();
public int increment() {
Data oldData;
Data newData;
do {
oldData = atomicRef.get();
// 尝试更新版本号和值
newData = new Data(oldData.value + 1, oldData.version + 1);
// 尝试更新,如果AtomicReference中的数据没有变化,则更新成功
} while (!atomicRef.compareAndSet(oldData, newData));
return newData.value;
}
public static void main(String[] args) {
OptimisticLockExample example = new OptimisticLockExample();
example.atomicRef.set(new Data(0, 0));
for (int i = 0; i < 10; i++) {
System.out.println(example.increment());
}
}
}
CAS乐观锁快速实现
最新推荐文章于 2024-07-12 15:51:39 发布