728x90
volatile = 휘발성
그 변수를 휘발성 메모리에 만들어라 라는 뜻이다.
변수를 메인 메모리에 저장하겠다고 명시하는 것이다.
매번 변수의 값을 Read,Wrtie할 때마다 CPU cache에 저장된 값이 아닌 Main Memory에서 읽는 것이다 .
CPU Cache보다 Main Memory 비용이 더 크기 때문에 변수 값 일치를 보장해야만 하는 경우에만 volatile을 사용하는게 좋다.
Main Memory에 read, write 하는 작업의 원자성을 보장하는 경우.
원자성이 보장되는 경우에 volatile 키워드 만으로 안전하게 데이터를 교환할 수 있음.
멀티 스레드 환경에서 하나의 스레드만 read & write 하고 나머지 Thread가 read하는 상황에서 가장 최신의 값을 보장함
volatile은 왜 하나의 스레드가 write 하고 다른 스레드들은 read 하는 상황에서 적합하고.
여러개의 스레드가 write 하는상황에서 왜 적합하지 않을까?
volatile은 어떻게 원자성을 보장할까
'개발 > Java' 카테고리의 다른 글
NIO2 (0) | 2021.05.18 |
---|---|
ThreadLocal이란? (0) | 2021.05.17 |
BigInteger, BigDecimal 클래스 (0) | 2021.05.17 |
JVM String Constant Pool (0) | 2021.05.17 |
Spliterator란 (1) | 2021.05.17 |