volatile자바에서 volatile 키워드를 붙이면, 그 변수는 CPU 캐시를 거치지 않고 메인 메모리에서 직접 읽고 쓰기 하도록 보장됩니다.여러 스레드가 동시에 그 변수를 읽더라도 최신 값을 보게 됩니다. (가시성 Visibility 보장)또한, 재정렬 방지 (reordering) 효과도 있어서 변수의 쓰기와 읽기 순서가 보장됩니다. 하지만 원자성 까지는 보장하지 않는다.class Counter { volatile int count = 0; void increment() { count++; // 원자적이지 않음! }} 멀티 스레드 환경에서 여러 스레드가 동시에 실행되면 꼬인다. 재정렬 개념도 보면 좋다.class ReorderExample { int a = 0;..