Clean Code that Works.

다리를 건널 수 있는 사람은 오직 한 명

별명 : Critical Section, Critical Region

문맥 : 목수의 쓰레드가 인스턴스를 공유하고 있습니다.

문제 : 각각의 쓰레드가 인스턴스의 상태를 마음대로 변경하면 인스턴스의 안정성을 잃어버리게 됩니다.

해결법
  우선 인스턴스가 불안정한 상태가 되는 범위(크리티컬 섹션)를 확실히 정해 둡니다. 그리고 크리티컬 섹션은 하나의 쓰레드만이 실행하도록 가드합니다. 그렇게 하면 인스턴스의 안정성은 지켜집니다.

구현
  자바에서는 synchronized를 사용하여 크리티컬 섹션을 실현합니다.

관련
  인스턴스의 상태가 변화하지 않을 때 스루풋을 향상시키기 위해서는 Immutable 패턴을 사용합니다.
  인스턴스의 상태를 참조하는 쓰레드와 변경하는 쓰레드가 나누어져 있을 때에는 스루풋을 향상시키기 위해서 Read-Write Lock 패턴을 사용합니다.

- Java언어로 배우는 디자인 패턴 입문 -