报告对 volatile 字段的非原子操作。

非原子操作的示例之一是使用增量运算符更新字段。 由于操作涉及读写,并且在此之间可能发生其他修改,因此可能损坏数据。 使用 synchronized 块进行环绕,或使用 java.util.concurrent.atomic 包中的一个类,可以使该项操作成为原子操作。

示例:

  private volatile int v = 1;

  void foo() {
    v = 2 * v;
  }