AtomicInteger是Java中基于CAS实现的原子整型类,用于保证多线程环境下共享变量的线程安全,其核心方法如incrementAndGet、compareAndSet等均无需加锁即可保证原子性,性能优于synchronized。

在多线程环境下,对共享变量的并发修改容易引发数据不一致问题。Java 提供了 AtomicInteger 类来解决整型变量的原子操作问题,确保线程安全,而无需使用 synchronized 关键字。
AtomicInteger 是什么?
AtomicInteger 是 java.util.concurrent.atomic 包下的一个原子类,它提供了一组原子操作方法来更新整型变量。其内部基于 CAS(Compare-And-Swap)机制实现,由 CPU 指令支持,性能优于传统的加锁方式。
常用方法说明与使用示例
以下是一些 AtomicInteger 的核心方法及其用法:
get():获取当前值 set(int newValue):设置新值(原子写操作) incrementAndGet():自增并返回新值(等价于 ++i) decrementAndGet():自减并返回新值 getAndIncrement():先返回当前值,再自增(等价于 i++) addAndGet(int delta):加上指定值并返回结果 getAndAdd(int delta):先返回当前值,再加指定值 compareAndSet(int expect, int update):如果当前值等于 expect,则更新为 update,成功返回 true
示例:多个线程对计数器进行自增操作
立即学习“Java免费学习笔记(深入)”;
Cowriter
AI 作家,帮助加速和激发你的创意写作
107 查看详情
import java.util.concurrent.atomic.AtomicInteger;public class Counter { private AtomicInteger count = new AtomicInteger(0); public void increment() { count.incrementAndGet(); // 原子自增 } public int getValue() { return count.get(); }}// 测试类public class AtomicExample { public static void main(String[] args) throws InterruptedException { Counter counter = new Counter(); Thread t1 = new Thread(() -> { for (int i = 0; i { for (int i = 0; i < 1000; i++) { counter.increment(); } }); t1.start(); t2.start(); t1.join(); t2.join(); System.out.println("最终结果: " + counter.getValue()); // 输出 2000 }}
CAS 原理简要说明
AtomicInteger 的原子性依赖于底层的 CAS 操作。CAS 包含三个操作数:内存位置 V、预期原值 A 和新值 B。只有当内存位置的当前值等于预期值 A 时,才将该位置更新为 B,否则不做任何操作。这个过程是原子的,由处理器保证。
虽然 CAS 避免了锁的开销,但在高竞争场景下可能因反复重试影响性能,不过对于大多数计数、状态标志等场景,AtomicInteger 表现优秀。
适用场景与注意事项
AtomicInteger 适合用于简单的共享状态管理,比如计数器、序列号生成、状态标志位等。但不适合复杂业务逻辑的同步控制。
不能替代 volatile 在所有场景下的作用,但比 volatile 更强,支持复合操作原子性 不支持像 i = i + 5 这样的复合赋值的原子性,应使用 addAndGet(5) 不可变对象或复杂数据结构仍需使用锁或其他并发工具
基本上就这些。AtomicInteger 是实现轻量级线程安全计数的理想选择,合理使用能有效提升并发程序性能。
以上就是在Java中如何使用AtomicInteger实现原子操作_Atomic变量线程安全操作说明的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1062954.html
微信扫一扫
支付宝扫一扫