volatile
-
atomic vs volatile vs synchronized :: 마이구미Java 2017. 1. 29. 21:28
이번 글은 java에서의 동기화 방법에 대해 다뤄본다.글에 앞서 관련 글을 읽어오길 바란다. Atomic Operation private int counter; public int getNextUniqueIndex() { return counter++; } 위 코드는 관련 글에서도 다뤘다.메모리에서 counter 변수를 읽은 후 값을 증가시키고 다시 메모리에 저장하는 작업 3가지로 분리된다.싱글 스레드에서는 문제가 되지 않지만, 멀티 스레드에서는 문제가 된다. (위 관련 글에서 자세히 볼 수 있다)문제로는 경쟁 상태와 변수의 가시성 문제가 발생한다.* 경쟁 상태(race condition) - 여러 스레드 같은 시점 변수를 읽는 상태.* 변수의 가시성(visibility) - 변수들이 사용될 수 있는 영..