我已经研究了SO (包括this one)中的其他易失性与原子性with问题,并阅读了the description of java.util.current.atomic,但我对其中的细微差别并不是很满意。
如果我试图决定使用volatile boolean
和AtomicBoolean
,除了AtomicBoolean提供的原子读-修改-写操作之外,还有什么实际的区别吗?(例如compareAndSet()
和getAndSet()
)
假设我有
volatile boolean flag;
然后一个或多个线程设置该标志(但不清除它)。如果我有一个读取标志的线程,如果设置了,执行一个操作,然后清除标志,volatile
就足够了吗?
就以下方面而言,AtomicBoolean的成本是否高于易失性布尔值
hit (根据AtomicBoolean
space
volatile boolean
似乎需要内存隔离,AtomicBoolean
似乎需要内存隔离以及对CAS操作的一些小锁定我的直觉是使用AtomicBoolean是安全的,但我想知道是否有使用volatile boolean
的情况(例如,如果我有数以千计的实例,性能是一个问题)。
https://stackoverflow.com/questions/4876122
复制相似问题