【发布时间】:2017-08-11 16:02:59
【问题描述】:
如果一个类有一个私有的AtomicReference 成员,并且它只调用AtomicReference#get 和AtomicReference#set,那么用可以为空的volatile 成员替换它是否(a)安全并且(b)有用?
【问题讨论】:
标签: java concurrency
如果一个类有一个私有的AtomicReference 成员,并且它只调用AtomicReference#get 和AtomicReference#set,那么用可以为空的volatile 成员替换它是否(a)安全并且(b)有用?
【问题讨论】:
标签: java concurrency
正如here 的回答,如果您只使用get() 和set() 方法,那么两者之间并没有真正的区别。
安全吗?是的。
有用吗?值得商榷,考虑到您将来可能需要哪些附加功能。如果你想让它尽可能简单,volatile 可能(可以说)提供更好的可读性。我通常坚持AtomicReference,因为我不能总是预测未来的需求,而且我不太喜欢在可以避免的情况下更改变量类型。
【讨论】: