Are atomic memory updates in Java also guaranteed to be visible?
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

已采纳
atomic memoery 的一个问题
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除 结题
- 收藏 举报
2条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
会飞的锅 2018-03-14 02:18关注Atomic系列的API不仅保证可见性,还保证原子性。主要的实现思路是无锁设计,用volatile修饰状态保证其可见性,操作值是在一个无限循环体内,操作一次后用CAS保证在操作前读取后没有被其他线程操作,这可以保证原子性。但是可以想得到并发到达一个程度后,效率会急剧下降。
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2017-01-05 22:43回答 1 已采纳 多个atomic对象组合到一起就会使他们的修改不是一起发生。不如lock来的方便
- 2023-03-15 11:13回答 2 已采纳 这篇文章讲的很详细,请看:flink Too many fields referenced from an atomic type
- 2017-08-03 17:18回答 4 已采纳 当然是你用错了,你都在使用多线程,你能保证你的主线程里的打印语句一定会在子线程执行完才会执行吗?
- 2023-08-17 09:42Java Memory Model (JMM) 是Java虚拟机(JVM)的一个核心概念,它定义了程序中的各种变量(线程共享变量)的访问规则以及这些变量在各个线程之间的可见性问题。JMM的核心目标是解决由线程交替执行和现代计算机内存系统...
- 2021-04-15 17:02回答 1 已采纳 并发主要解决三个问题,CPU切换线程执导致的原子性问题,缓存导致的可见性问题,指令优化导致的重排序问题 原子类解决的是原子性问题,volatile解决的是变量可见性、禁止重排序;所以你这可以解决指令
- 2019-01-12 06:40回答 1 已采纳 tickets.get() 是原子操作,tickets.getAndDecrement()是原子操作。但是两个操作合起来就不具备原子性了。判断和操作分离了。 Thread-2 , Thread-3,
- 2018-05-04 15:37回答 3 已采纳 用lock实现同步是没有问题的,你第二个程序出问题是因为锁不同的原因。你第一个程序有两个锁,而你第二个程序有四个锁,getPair方法是同步方法。第一个例子中,程序执行了x++之后,如果发生了线程状态
- 2023-11-03 11:47长江七号zzj的博客 在Java并发编程中,ThreadLocal、Volatile、Synchronized和Atomic关键字都是非常重要的工具。ThreadLocal用于创建线程本地变量,以避免线程安全问题;Volatile用于保证变量的可见性;Synchronized用于修饰方法或代码...
- 2016-12-04 23:02回答 1 已采纳 你启动了100个线程,下方的线程加上就是101个,这样就会有100个线程输出1,一个线程输出2,所以建议你,先改一改代码吧
- 2015-02-23 01:13回答 2 已采纳 The fault is caused in the first case by the atomically updated field not being properly aligned.
- 2021-11-05 01:26回答 1 已采纳 这篇文章很详细的介绍了原因,可以看看 LongAdder由来LongAdder类是JDK1.8新增的一个原子性操作类。AtomicLong
- 2020-05-12 12:56Bol5261的博客 是Java提供的一个用于多线程环境下的原子操作的包。这个包中的类使用了Unsafe实现的CAS(Compare And Swap)原子操作,可以方便程序员在多线程环境下进行无锁的原子操作。此外,现代CPU广泛支持CAS指令,如果不支持...
- 2014-12-05 02:29在Java开发过程中,...对于每一个问题,都需要开发者具备扎实的Java基础,对语言特性和框架有深入理解,并且能够熟练使用各种调试和分析工具。通过不断学习和实践,可以逐渐克服这些问题,提升开发效率和代码质量。
- 2019-08-07 03:28衣舞晨风的博客 翻译自:Package java.util.concurrent.atomic 地址: https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/package-summary.html#package.description 翻译JDK8而不是12的原因是JDK8对与...
- 2019-09-25 04:46在Java中,`synchronized`是一种同步机制,用于确保线程间的互斥访问,即同一时间只允许一个线程执行特定的方法或代码块。它可以防止多线程环境下数据不一致的问题。 **CAS操作失败的原因:** CAS(Compare and ...
- 没有解决我的问题, 去提问
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司