volatile 키워드


volatile 키워드로 선언된 변수는 Main Memory에 저장된다.

보통 변수에 read/write를 하게되면 CPU Cache까지만 바라보고 작업을 진행하는데, 이를 Main Memory까지 확장시키는 것.

 

아래 그림을 보자.

 

멀티 스레드 프로그래밍에서 각 스레드는 최초 메인 메모리에서 변수의 값을 읽어온후, 이를 CPU Cache에 저장한다.

그 다음부터는 변수 값을 참조하기 위해 CPU Cache까지만 보기 때문에 두 스레드가 같은 변수의 값을 read/write한다면 값의 불일치 문제가 발생할 수 있다.

CPU Cache가 아닌 Main Memory에서 변수의 값을 읽고/쓴다면 변수 값의 동기화 문제가 해결될 수 있다. ( volatile로 변수를 선언. )

 

 

 

참고자료


 

[1] https://nesoy.github.io/articles/2018-06/Java-volatile

 

'Programming > Java' 카테고리의 다른 글

[Java] NIO  (0) 2020.04.17
[Java] Atomic Type  (0) 2020.04.13
[Java] synchronized 키워드  (0) 2020.04.13
[Java] @ 어노테이션  (0) 2020.03.31
[Java] Optional<T> 클래스  (0) 2020.03.24