在 Java 中,CAS(Compare and Swap)既是一种思想(即乐观锁思想),也是一个具体的类。
CAS 是一种并发编程中用于实现线程安全操作的机制,它基于原子性操作能力,通过比较内存中的值与预期值是否相等,如果相等则进行更新操作,否则不进行更新。CAS 操作是乐观锁的一种实现方式,它避免了传统锁机制中的等待与阻塞,提高了并发效率。
在 Java 中,CAS 机制通过 java.util.concurrent.atomic 包中的类来实现,其中最常用的类是 AtomicInteger、AtomicLong、AtomicReference 等。这些类提供了 CAS 相关的操作方法,比如 compareAndSet、getAndSet、compareAndExchange 等,以支持线程安全的数值操作。
具体使用 CAS 时,可以创建对应的原子类实例,并通过调用其提供的 CAS 方法来实现线程安全的数据修改。例如:
- AtomicInteger counter = new AtomicInteger(0);
- int oldValue = counter.get();
- int newValue = oldValue + 1;
- // 使用 CAS 操作进行修改
- while (!counter.compareAndSet(oldValue, newValue)) {
- oldValue = counter.get();
- newValue = oldValue + 1;
- }
因此,总结来说,CAS 是一种乐观锁的思想,Java 中通过 java.util.concurrent.atomic 包提供的原子类来具体实现 CAS 机制,实现线程安全的操作。