Java volatile reference vs. AtomicReference

2022-08-31 07:45:23

对象引用和如果我只使用和 -方法,有什么区别吗?volatileAtomicReferenceget()set()AtomicReference


答案 1

简短的回答是:不。

来自 java.util.concurrent.atomic package 文档。引用:

原子的访问和更新的内存效应通常遵循易失性的规则:

  • get具有读取变量的记忆效果。volatile
  • set具有写入(分配)变量的记忆效果。volatile

顺便说一句,该文档非常好,并且解释了所有内容。


AtomicReference::lazySet是一个较新的(Java 6 +)操作,其语义无法通过变量实现。有关详细信息,请参阅此帖子volatile


答案 2

没有。

AtomicReference提供的额外功能是compareAndSet()方法和朋友。如果不需要这些方法,则易失性引用提供与 AtomicReference.set() 和 .get() 相同的语义。


推荐