[Java] volatile 키워드
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 |
댓글
이 글 공유하기
다른 글
-
[Java] NIO
[Java] NIO
2020.04.17 -
[Java] Atomic Type
[Java] Atomic Type
2020.04.13 -
[Java] synchronized 키워드
[Java] synchronized 키워드
2020.04.13 -
[Java] @ 어노테이션
[Java] @ 어노테이션
2020.03.31