JUC 原子类

volatile 变量

volatile变量具有可见性,也就是说线程能够自动发现volatile 变量的最新值;对volatile变量进行操作不会造成阻塞。

适用于:多个变量之间或者某个变量的当前值与修改后值之间没有约束。

正确使用volatile变量的条件:

  1. 对变量的写操作不依赖于当前值。
  2. 该变量没有包含在具有其他变量的不变式中。

所以,volatile变量不支持像i++这样的原子操作,因为这条语句包含了三个步骤:读取-加1操作-写变量。
继续阅读