volatile
允许可见性,AtomicInteger
允许原子性。
所以如果我使用一个volatile AtomicInteger
,是否意味着我不需要使用任何其他的同步机制?例如。
class A {
private volatile AtomicInteger count;
void someMethod(){
// do something
if(count.get() < 10) {
count.incrementAndGet();
}
}
这是线程安全的吗?
intValue()
,然后都调用incrementAndGet()
,因此无法保证上述代码不会使count
超过10。 - Jon Skeet