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

Does AtomicReference.compareAndSet(old,new) guarantees old.field wasn't change?

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

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

如果 2 为真,是否意味着 AtomicReference 仅对 String 这样的不可变对象有用? (因为在 old 可变性的情况下, old.field 更改会丢失 成功 compareAndSet

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

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