原子类

举例解释

AtomicInteger counter = new AtomicInteger(5);
boolean success = counter.compareAndSet(5, 6);  // 如果当前是5,则设置为6

原理

1、CAS 依赖底层 CPU 提供的汇编语言原子指令 lock cmpxchg,硬件层面加锁了,可以理解为atomic.compareAndSet就是一个原子操作。
2、如果数据是64个字节以内用缓存行锁,超过64个字节用总线锁。

当前值是 5 → 与预期值相同 → 更新为 6 → 返回 true
当前值不是 5(比如已被其他线程改成了 7)→ 不更新 → 返回 false

位置

原子类在java.util.concurrent.atomic包下

常用的有

常用的有:AtomicBoolean、AtomicInteger、AtomicLong、AtomicIntegerArray、AtomicReference、DoubleAdder、LongAdder
如果做累加操作建议使用LongAdder,比AtomicLong性能更好。

posted @ 2025-07-10 16:35  Charlie-Pang  阅读(9)  评论(0)    收藏  举报