【发布时间】:2011-11-11 09:39:31
【问题描述】:
我已经阅读了一些关于 volatile 变量及其 AtomicXXX 对应物的信息(例如 AtomicBoolean)。
但在某些情况下,我需要使 AtomicXXX 对象本身易失,还是根本不需要?
【问题讨论】:
标签: java concurrency atomic
我已经阅读了一些关于 volatile 变量及其 AtomicXXX 对应物的信息(例如 AtomicBoolean)。
但在某些情况下,我需要使 AtomicXXX 对象本身易失,还是根本不需要?
【问题讨论】:
标签: java concurrency atomic
你不需要——事实上,原子对象真的应该设置为final!!
例子:
private final AtomicInteger atomicInt = new AtomicInteger(0);
private volatile int volatileInt = 0;
public void doStuff() {
// To use the atomic int, you use the setters and getters!
int gotAnInt = atomicInt.getAndIncrement();
// To use a volatile, access and set it directly.
int gotAnotherInt = volatileInt;
volatileInt = someOtherInt;
}
【讨论】:
阅读this 了解何时使用 volatile 的一些提示和说明。但基本上,如果您使用的是 AtomicXXX,则不需要使用 volatile。
【讨论】: