非アトミック操作の例としては、インクリメント演算子を使用したフィールドの更新が挙げられます。
この操作には読み取りと書き込みが含まれますが、操作中には他の変更も起こる可能性があります。そのため、データが破損する場合があります。
この操作は synchronized ブロックで囲むか、java.util.concurrent.atomic パッケージに含まれるいずれかのクラスを使用することでアトミックにすることができます。
例:
private volatile int v = 1;
void foo() {
v = 2 * v;
}