[Java] Multi Thread Memory Visibility & Volatile Keyword
·
Spring Framework/Multi Thread Programming
#Memory Visibility 메모리 가시성 (Memory Visibility) 문제는 멀티 스레드 환경에서 발생하는 특정 스레드에서 변경한 정보가 바로 다른 스레드에 보이지 않는 현상이다.이는 CPU 아키텍쳐 구조로 인해 발생한다. 메인 메모리로부터 직접 데이터를 불러오는 것은 CPU로부터의 거리가 멀리 떨어져 있기에 상대적으로 속도가 느리다. 따라서 CPU는 속도 향상을 위해 CPU 근처에 작은 크기의 캐시 메모리를 배치하여 속도를 향상시키는 구조를 채택한다. 자바 멀티 스레드 환경에서 또한 각 스레드는 고유의 캐시 메모리를 가진다. CPU 아키텍쳐와 동일하게 스레드는 메인 메모리로부터 직접 값을 읽는 대신, 스레드의 캐시 메모리로 값을 복사한 뒤 사용한다. #Memory Visibility E..