[Java] synchronized 동작 원리 - 모니터 락, CAS
·
Java
synchronized`synchronized`는 같은 프로세스(JVM) 안에서 동기화를 보장하는 키워드이다. 동기화란, 여러 스레드/프로세스가 공유 자원(같은 객체나 변수)에 접근할 때 데이터를 일관되게 유지하도록 맞추는 것을 의미한다.더 정확히 말하면, 실행 순서와 메모리 상태를 서로 맞추는 것이다. 단일 스레드 환경에서도 동작 자체는 보장되지만, 경쟁 자체가 없기 때문에 사실상 멀티 스레드 환경에서만 의미가 있다. 여기서 원자성(Atomicity) 과 Thread safe 의 개념을 구분해야 한다.원자성 vs Thread safe원자성특정 연산이 중간에 끊기지 않고 완전히 실행되거나, 아예 실행되지 않는 성질을 말한다.// i++는 사실 3단계 연산int temp = i; // 1. read..