首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java易失性引用与AtomicReference

Java易失性引用与AtomicReference
EN

Stack Overflow用户
提问于 2008-11-11 15:04:27
回答 4查看 43.6K关注 0票数 146

如果我只使用get()set()-methods,那么AtomicReference中的volatile对象引用和AtomicReference之间有什么区别吗

EN

回答 4

Stack Overflow用户

发布于 2008-11-11 15:20:34

不,没有。

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

票数 47
EN

Stack Overflow用户

发布于 2013-02-03 23:24:42

JDK source code是解决这种困惑的最好方法之一。如果您查看AtomicReference中的代码,您会发现它使用了一个volatie变量来存储对象。

private volatile V value;

所以,很明显,如果你打算在AtomicReference上只使用get()和set(),就像使用一个易失性变量。但正如其他读者评论的那样,AtomicReference提供了额外的CAS语义。因此,首先决定是否需要CAS语义,如果需要,则使用AtomicReference。

票数 8
EN

Stack Overflow用户

发布于 2009-01-30 20:35:39

AtomicReference提供了普通的易失性变量无法提供的附加功能。当您阅读API Javadoc时,您将知道这一点,但它还提供了一个锁,该锁对某些操作很有用。

但是,除非您需要这个额外的功能,否则我建议您使用一个普通的volatile字段。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/281132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档