1) Volatile
- 요즘엔 대부분 멀티 코어 프로세서가 장착된 컴퓨터를 사용한다.
그리고 멀티 코어 프로세서에서는 코어마다 별도의 캐시를 가지고 있다.
- 코어는 메모리에서 읽어 온 값을 캐시에 저장하고 캐시에서 값을 읽어서 작업한다.
다시 같은 값을 읽어올 때는 먼저 캐시에 있는지 확인하고 없을 때만 메모리에서 읽어온다.
- 그러다보니 도중에 메모리에 저장된 변수의 갑싱 변경되었는데도 캐시에 저장된 값이 갱신되지 않아서
메모리에 저장된 값이 다른 경우가 발생한다.
boolean suspended = false; -----> volatile boolean suspended = false;
boolean stopped = false; -----> volatile boolean stopped = false;
이 때, 변수 앞에 volatile을 붙이면, 코어가 변수의 값을 읽어올 때
캐시가 아닌 메모리에서 읽어오기 때문에 캐시와 메모리간의 값의 불일치가 해결된다.
'자바의 정석' 카테고리의 다른 글
[자바의 정석 2권] wait()와 notify() (0) | 2024.12.30 |
---|---|
[자바의 정석 2권] Lock과 Condition을 이용한 동기화 (0) | 2024.12.30 |
[자바의 정석 2권] TreeSet (0) | 2024.12.24 |
[자바의 정석 2권] HashSet (0) | 2024.12.24 |
[자바의 정석 2권] LinkedList (0) | 2024.12.24 |