首页 > Java > java教程 > 正文

Java里如何使用AtomicReference实现对象原子更新_AtomicReference对象原子操作解析

P粉602998670
发布: 2025-12-15 14:01:52
原创
248人浏览过
AtomicReference提供对象引用的原子更新,通过CAS机制实现线程安全的compareAndSet操作,适用于无锁编程与共享引用的高效并发控制。

java里如何使用atomicreference实现对象原子更新_atomicreference对象原子操作解析

在Java并发编程中,AtomicReferencejava.util.concurrent.atomic 包提供的一个工具类,用于实现对象引用的原子更新。它适用于需要线程安全地更新某个共享对象引用的场景,而无需使用 synchronized 关键字或显式加锁。

AtomicReference 的基本用法

AtomicReference 可以包装任意类型的对象,提供线程安全的 get 和 set 操作,并支持 compareAndSet(CAS)等原子方法。

创建一个 AtomicReference 实例非常简单:

AtomicReference<String> ref = new AtomicReference<>("initial");
登录后复制

你可以通过 get() 获取当前值,set() 更新值:

立即学习Java免费学习笔记(深入)”;

System.out.println(ref.get()); // 输出: initial
ref.set("updated");
System.out.println(ref.get()); // 输出: updated
登录后复制

使用 compareAndSet 实现条件更新

最核心的功能是 compareAndSet(expectedValue, newValue),它会比较当前引用是否等于预期值,如果相等,则原子性地设置为新值,返回 true;否则不修改并返回 false。

TabTab AI
TabTab AI

首个全链路 Data Agent,让数据搜集、处理到深度分析一步到位。

TabTab AI 326
查看详情 TabTab AI

这个机制常用于多线程环境下避免竞态条件。例如:

AtomicReference<Integer> counter = new AtomicReference<>(0);

Runnable task = () -> {
    for (int i = 0; i < 1000; i++) {
        Integer current;
        Integer newValue;
        do {
            current = counter.get();
            newValue = current + 1;
        } while (!counter.compareAndSet(current, newValue));
    }
};

// 启动多个线程执行任务
Thread t1 = new Thread(task);
Thread t2 = new Thread(task);
t1.start(); t2.start();
t1.join(); t2.join();

System.out.println(counter.get()); // 正确输出 2000
登录后复制

上面的例子中,多个线程安全地递增一个 Integer 对象,利用 CAS 循环确保每次更新都是基于最新值进行的。

适用场景与注意事项

AtomicReference 特别适合以下情况:

  • 需要原子地切换某个配置对象、状态对象或缓存实例。
  • 实现无锁数据结构,如无锁队列、中的头节点引用更新。
  • 替代 volatile 配合双重检查锁定(DCL),简化线程安全单例模式。

但需要注意:

  • AtomicReference 只保证引用的原子性,不保证被引用对象内部状态的线程安全。
  • 频繁的 CAS 失败会导致自旋开销,影响性能。
  • 避免在高竞争场景下长时间循环操作,必要时考虑使用 LongAdder、ConcurrentHashMap 等更高级结构。

基本上就这些。AtomicReference 提供了一种轻量级、高效的对象引用原子更新方式,合理使用可以显著提升并发程序的可读性和性能。关键在于理解其 CAS 机制和适用边界。

以上就是Java里如何使用AtomicReference实现对象原子更新_AtomicReference对象原子操作解析的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号