volatile

Java 변수를 **메인 메모리에 저장하겠다라고 명시**하는 것이다.


volatile이 필요한 이유

Untitled

MultiThread 환경이라고 했을 때,

volatile 사용 X 변수 → 성능 향상을 위해 Main Memory에서 읽은 변수 값을 **CPU Cache에 잠시 저장**한다.

**각각의 Thread**가 변수 값을 읽어올 때 CPU Cache에 저장된 값이 다르기 때문에 변수 값 불일치 문제 발생


volatile이 적합한 경우

Multi Thread 환경이라고 했을 때,

**하나의 Thread만 read & write**하고 나머지 Thread는 read만 하는 상황에서 가장 최신의 값 보장

항상 volatile을 사용하는게 좋을까?

스크린샷 2023-12-26 오후 9.28.26.png

위 설명처럼 여러 개의 Thread가 write가 가능한 상황에서는 적합하지 않다.