volatile变量赋值是原子的吗
java中volatile变量的读写操作本身是原子的,但“赋值”是否原子取决于赋值的类型。对于基本类型(如int、long、double),volatile保证了读写的原子性;但对于64位类型(long和double)在32位jvm上可能非原子,需显式声明volatile。复合操作(如i++)不是原子的,因为包含读、改、写三步。

哪些操作受volatile保证原子性
volatile仅保证单个变量的读写原子性和可见性,不保证复合操作的原子性。例如count = count + 1涉及读取、计算、写入三个步骤,即使count是volatile,该操作仍非原子。

counter++
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











