위는 네이버에서 검색한 volatile의 사전적인 의미이다.
volatile 키워드로 선언된 변수는 여러 스레드에 의해서 값이 변경 될 수 있다는 것이다. 그 뜻이 무엇이냐면, 64bit인 Long의 값을 32bit 운영체제에서 오퍼레이션 하려면 두번 나누어서 연산을 하게 된다. 이는 Multi Thread에서 원자성의 문제가 생기게 된다.
즉,
int i = 0;
i++;
일때 i의 값인 0이 캐시 메모리에 올라간 뒤, 1이 더해진다.
그리고 그 더해진 값이 i로 저장된다.
이렇게 연산이 MOV, ADD, MOV 세개로 나뉘어 진다.
하지만, volatile키워드를 사용하면, 변수의 값을 캐시한 캐시메로리가 아닌 메모리에서 직접 그 값을 읽어온다. 그렇기 때문에 항상 최신의 값을 읽어 올 수 있다.
'Programinng > Java' 카테고리의 다른 글
자바(Java) - HttpClient 통신 <Get, Post, DefaultHttpClient> (0) | 2012.12.15 |
---|---|
자바 JVM (Runtime Data Areas) (0) | 2012.12.15 |
자바(Java) - Exception은 OCP를 위배한다. (0) | 2012.12.15 |
자바(Java) - 객체지향이란? (0) | 2012.12.15 |
자바(Java) - Generic 타입 추론 (0) | 2012.12.15 |