[Java 정리] Thread 6
starryeye:
이미 알던 지식이지만, 기본으로 돌아가서.. Java의 관점에서 한번 정리해보자. volatile 멀티 코어 프로세서 환경에서는 코어마다 별도의 캐시(레지스트리)를 가지고 있다. 코어는 메모리에서 읽어온 값을 캐시에 저장하고 캐시에서 값을 읽어서 작업한다. 다시 같은 값을 읽을 때는 캐시에 존재하지 않을 경우에만 메모리에서 읽어 온다. 그러면.. A코어에 의해 메모리에 저장된 변수의 값이 변경 되었는데.. B코어의 캐시에 저장된 값이 갱신 되지 않았다면.. 데이터가 다르므로.. 프로그램은 예상치 못한 흐름으로 동작한다. 해결법은.. 변수 앞에 volatile 키워드를 붙이면 코어가 변수의 값을 읽을 때 항상 메모리에서 읽어오게 된다. 따라서.. 캐시와 메모리간의 값의 불일치가 해결된다. volatile은..