一、Sychronized关键字
1.1Synchronized使用
三种方式:
1.2锁策略的synchronized原理
以上关于synchronized的讲解是属于在代码层次上的原理,关于锁还有一部分很重要的就是锁的策略,尤其对于synchronized来说,她有以下的一些特性:
二、什么是CAS(Compare-And-Swap)
CAS是一种原子操作,用于在多线程环境下实现无锁并发。它包含三个操作数:
代码示例
import java.util.concurrent.atomic.AtomicInteger;
public class OptimisticLockExample {
private AtomicInteger value = new AtomicInteger(0);
public void increment() {
int oldValue;
int newValue;
do {
// 获取当前值
oldValue = value.get();
// 计算新值
newValue = oldValue + 1;
// 尝试用CAS将旧值替换为新值
} while (!value.compareAndSet(oldValue, newValue));
}
}
优点
缺点
总结
CAS(Compare-And-Swap)是一种用于实现无锁并发的原子操作,通过比较和交换的方式确保数据的一致性。它在乐观锁中得到了广泛应用,特别是在Java的java.util.concurrent.atomic
包中,如AtomicInteger
、AtomicLong
等类。虽然CAS机制有其优点,但也存在一些潜在的问题,如ABA问题和自旋等待,需要根据具体情况进行权衡和处理。