Java面试题之多线程 什么是CAS
CAS(Compare and Swap)是一种用于实现多线程环境下的原子操作的机制。它是无锁编程的一种重要手段,广泛应用于并发编程中,尤其是在Java的并发包(如java.util.concurrent
)中。
CAS操作涉及三个参数:
CAS的操作步骤如下:
在Java中,CAS操作通常通过java.util.concurrent.atomic
包中的原子类来实现,例如:
AtomicInteger
AtomicReference
AtomicBoolean
这些类内部使用了CAS机制来实现对变量的原子更新。
以下是一个使用AtomicInteger
的简单示例:
import java.util.concurrent.atomic.AtomicInteger;
public class CASExample {
public static void main(String[] args) {
AtomicInteger atomicInteger = new AtomicInteger(0);
// 使用CAS进行原子更新
int expectedValue = atomicInteger.get();
int newValue = expectedValue + 1;
// 尝试更新
if (atomicInteger.compareAndSet(expectedValue, newValue)) {
System.out.println("更新成功: " + atomicInteger.get());
} else {
System.out.println("更新失败");
}
}
}
在这个示例中,compareAndSet
方法实现了CAS操作,确保在多线程环境下对atomicInteger
的安全更新。