개발/Java

자바 volatile 이란?

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