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