들어가기 앞서JVM이 새로운 객체를 생성할 때 발생하는 메모리 할당 방식을 보면 CAS 라는 개념이 나온다. 이 글에서는 자바를 기반으로 CAS 연산에 대해 좀 더 구체적으로 알아보고자 한다. 먼저 연관되는 배경지식을 알아보자.(미리 말하지만 알아야 될 내용이 많아서 멀리 돌아간다..) 멀티쓰레드가 동작하는 환경에서 데이터의 안정성을 보장하는 방법이 뭐가 있을까? synchronized(동기화)대표적인 방법이 Mutex나 Semaphore를 이용한 Lock 기반 알고리즘이 있다. 이 둘은 바이너리 세마포어(동기화 대상이 오직 하나뿐)이냐 카운팅 세마포어(동기화 대상이 하나 이상)이냐에 따라 차이점이 존재하지만 결국 동시에 공유 자원에 접근하는 것을 막기 위해 Critical Section(임계 영역)에 ..