gpt4 book ai didi

java - java 引用的竞争条件

转载 作者:行者123 更新时间:2023-11-29 04:00:51 24 4
gpt4 key购买 nike

原子整数、长整数、 boolean 值等用于对相应类型进行任何原子更新,因为当我们对它们执行任何操作时可能存在竞争条件,例如++。但是,在可能存在此类竞争条件的情况下,引用的不同情况是什么?

最好的问候,
凯沙夫

最佳答案

AFAIK 引用不受竞争条件的影响,因为 JVM 保证引用更新是一个原子操作(不像更新 long,其中低 4 字节和高 4 字节在两个不同的步骤中更新).正如 SLaks 指出的那样,唯一的关键情况是 compareAndSet,它本质上不是原子的。这很少与 native 引用一起使用,但是当需要同时更新两个(或更多)逻辑上相互依赖的变量时,它是 AtomicReference 的一个已知习惯用法。 Java 并发实践,第 15.3.1 节为此发布了一个示例,使用 AtomicReference 在一个原子操作中更新两个变量(存储在一个简单的类中)。

AtomicReference 存在的主要原因 - 除了接口(interface)的一致性 - 是可见性安全发布。从这个意义上说,原子变量是“更好的 volatile”。

关于java - java 引用的竞争条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3745729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com