gpt4 book ai didi

java - Java AtomicReference#getAndSet 的用例是什么?

转载 作者:行者123 更新时间:2023-12-04 00:16:02 28 4
gpt4 key购买 nike

Java AtomicReference#getAndSet 的用例是什么?换句话说,如果我在代码中使用的来自 AtomicReference 的唯一方法是 AtomicReference#getAndSet 是否正确,那么我不需要 AtomicReference 完全没有,仅仅一个 volatile 变量就足够了吗?

例如,如果我有下一个代码:

private final AtomicReference<String> string = new AtomicReference<>("old");

public String getAndSet() {
return string.getAndSet("new");
}

,是不是一直都和

一样
private volatile String string = "old";

public String getAndSet() {
String old = string;
string = "new";
return old;
}

从调用者的角度来看?

最佳答案

不,这些不相等。不同之处在于 getAndSet 以原子方式执行两种操作,而不仅仅是一个原子 get 和一个原子 set。

getAndSet 总是保证返回 准确 存储在引用中的值就在设置新值之前。 volatile 版本可能会“跳过”其他线程插入的值。

关于java - Java AtomicReference#getAndSet 的用例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63729807/

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