volatile
·
자바/프로세스와 쓰레드
1. volatile - 메모리 값과 캐시 값과의 차이가 발생할 때 volatile을 사용한다. - 이 volatile은 싱글 코어 프로세서에서는 문제가 발생하지 않으므로 쓰일 곳이 없지만, 멀티 코어 프로세서에서 많이 쓰일 것이다. 그 이유는 멀티코어 프로세서마다 각 캐시가 존재하기 때문이다. - 코어는 메모리에서 읽어온 값을 캐시에 저장하고 캐시에서 값을 읽어서 빠르게 작업한다. 그러다보니, 값을 읽어올 때 캐시에 값이 존재하는지 확인하고 없을 때에만 메모리에 가서 값을 읽어온다. - 만약 코어가 메모리에 값이 변경되었는데도 캐시 값을 쓰인다면, 의도와 다른 값을 가질 수 있다. - 그러나 캐시에 사용되는 변수 앞에 volatile을 쓴다면, 코어가 캐시가 아닌 메모리에 가서 읽어오기 때문에 해결할 ..