gpt4 book ai didi

Java 原子变量 set() 与 compareAndSet()

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:23:01 32 4
gpt4 key购买 nike

我想知道原子类中 set() 和 compareAndSet() 的区别。 set() 方法是否也保证了原子过程?例如这段代码:

public class sampleAtomic{
private static AtomicLong id = new AtomicLong(0);

public void setWithSet(long newValue){
id.set(newValue);
}

public void setWithCompareAndSet(long newValue){
long oldVal;
do{
oldVal = id.get();
}
while(!id.compareAndGet(oldVal,newValue)
}
}

这两种方法是否相同?

最佳答案

setcompareAndSet 方法的行为不同:

  • compareAndSet :如果当前值等于 (==) 预期值,则以原子方式将值设置为给定的更新值。
  • set : 设置给定值。

Does the set() method also ensure the atomic process?

是的。它是原子的。因为设置新值只涉及一个操作。下面是set方法的源代码:

public final void set(long newValue) {
value = newValue;
}

关于Java 原子变量 set() 与 compareAndSet(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19238594/

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