关于volatile关键字的"Java Threads"一书的引用

Abi*_*idi 3 java volatile

我只是想知道是否有人可以解释这个含义:

增量和减量(例如++--)之类的操作不能用于volatile变量,因为这些操作是加载,更改和存储的语法糖.

我认为增量和减量应该适用于一个易变量变量,唯一的区别是每次你读或写时你都会从主内存访问/写入而不是从缓存中访问.

Pri*_*ley 8

volatile变量只能确保可见性.它不能确保原子性.我猜,这就是解释语句的方式.


Joa*_*uer 7

我认为你是脱离背景的.

当然++并且-- 可以被应用到volatile变量.他们只是不会是原子的.

而且由于volatile 经常意味着它们必须以原子方式处理,这与目标背道而驰.

这个问题++--是,他们可能会觉得好像他们是原子,而实际上他们不是.

a = a + 1(有点)明确表示它不是原子操作,但可能(错误地)认为它a++是原子的.