volatile 필드에서 atomic이 아닌 연산을 보고합니다.

atomic이 아닌 연산의 예시로는 증분 연산자를 사용하는 필드의 업데이트가 있습니다. 해당 연산에는 읽기 및 쓰기 작업이 포함되며 중간에 다른 수정이 발생할 수 있어 데이터가 손상될 수 있습니다. 연산을 synchronized 블록으로 감싸거나 java.util.concurrent.atomic 패키지의 클래스 중 하나를 사용하여 atomic으로 설정할 수 있습니다.

예:


  private volatile int v = 1;

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