거꾸로 바라본 세상
volatile 키워드
Language/Java 2017. 4. 13. 14:46

volatile 키워드 멀티코어 프로세서는 별도의 캐시를 가지고 있다코어는 메모리에서 읽은 값을 캐시에 저장한다.작업을 처리할 때 캐시에서 먼저 확인하고 없으면 메모리에서 호출하여 처리한다.그러다보니 도중에 메모리에 저장된 변수의 값이 변경되었는데 캐시에 저장된 값이 갱신되지 않아서스레드가 멈추지 않고 계속실행되는 경우가 있다. 그래서 volatile 키워드를 이용할 경우코어는 작업을 처리할 때 캐시가 아닌 메모리에서 불러와 처리하기 때문에캐시와 메모리간의 불일치 문제가 해결된다. 변수에 volatile 키워드를 붙이는 대신 synchronized 블록을 이용할 때도 같은 효과를 얻을 수 있다. 스레드가 synchronized 블럭으로 진입할 때와 나올 때, 캐시와 메모리간의 동기화가 이루어지기 때문에 ..