공유 상태와 그 상태를 다루는 메서드를 같은 보호 규칙 안에 둡니다.
모니터 동기화 구조
조건 변수는 단순 잠금이 아니라 조건이 거짓일 때 잠들고, 신호를 받은 뒤 다시 조건을 확인하는 약속입니다.
enter모니터 락 획득
점검조건 검사
wait락 반납 후 대기
signal깨운 뒤 재검사
객체 모니터 락을 사용해 한 번에 하나의 스레드만 synchronized 블록에 들어오게 합니다.
조건을 만족하지 않으면 wait로 잠들고 notify 후 깨어나도 다시 조건을 검사합니다.
깨어났다는 사실이 조건 만족을 보장하지 않으므로 if가 아니라 while로 확인합니다.
락 순서, 중재자, try-lock 같은 규칙이 교착 상태를 줄이는 대표 설계입니다.
Actor와 채널은 공유 메모리를 줄이고 메시지 전달로 동기화 부담을 낮춥니다.