AtomicReference.compareAndSet(old,new) 是否保证 old.field 没有改变?

J.J*_*eam 0 java multithreading atomicreference

是否AtomicReference.compareAndSet(old,new)保证

  1. old.field 不是变了吗?
  2. 或者它只是保证old不会重新分配给新对象?

如果 2 为真,这是否意味着AtomicReference仅对不可变对象有用,例如String?(因为在可变性的情况下oldold.field变化都将丢失与成功 compareAndSet

Lou*_*man 6

AtomicReference 检查引用相等性,不检查字段的更改。

因此,它主要只对不可变类型有用。

  • 是的,基本上。 (2认同)