- 스레드의 충돌을 방지하기 위해 한 번에 한 스레드만 접근할 수 있도록 허용
- 싱크 처리를 하면 공유 자원의 일관성을 보장할 수 있다.
- 한 번에 한 스레드만 접근할 수 있는 영역을 임계 영역(Critical Section)이라고 한다.
🎯 예시 - 하나의 자원을 공유하는 과정 보기
Cleaner는 1개 (공유 자원)
Cleaner를 사용할 Robot 2개 (스레드)
Robot이 Cleaner를 차지하기 위한 쟁탈전이 벌어진다.
notify(); => 나 부엌/화장실/방 청소 다 했다고 알리고(다른 스레드를 깨우는 거)
wait(); => 잠깐 쉼(대기). 이 두 메소드를 스레드끼리 왔다갔다 번갈아가면서 진행함.
// cleaner.@@Cleaning(); => 클리너의 화장실 청소기능을 사용하겠단 의미
// 각 공간에 청소로봇을 만들고 Thread 3번씩 진행
// 각 Robot들이 Cleaner를 차지하기 위한 쟁탈전을 벌인다. (하나의 자원을 공유하는 과정)
📰 콘솔창 결과
오룝지만 싱기해,,