Clean Code that Works.

balking +1
필요 없으면 관둬요.

문맥 : 복수의 쓰레드가 인스턴스를 공유하고 있다고 할때.

문제 : 복수의 쓰레드가 마음대로 인스턴스에 액세스하면 인스턴스의 안정성을 잃어버리게 된다.
         그러나 안전한 타이밍을 기다리고 있으면 응답성이 저하된다.

해결법 
  인스턴스의 상태가 부적절한 때에는 처리를 중단합시다. 우선 인스턴스의 '적절한 상태'를 '가드 조건' 으로 표현한다. 그리고 안정성을 잃어버릴 위험이 있는 처리를 하기 전에 가드 조건이 충족되었는지 테스트 한다. 가드 조건이 충족되어 있을때에만 실행을 계속 한다.가드 조건이 충족되어 있지 않으면 실핼을 중단(balk)하고 곧장 돌아간다.

구현
  자바에서는 가드 조건의 테스트에 if 문을 사용한다. balk하는 데에는 return으로 메소드에서 돌아오거나 throw로 예외를 던진다. 가드 조건의 테스트와 변경은 Single Threaded Execution 패턴을 사용한다.

관련
  가드 조건이 충족되기까지 기다리고 싶을 때에는 Guarded Suspension을 사용합니다.
  Balking 패턴의 가드 조건의 테스트와 변경을 기술하는 부분에서는 Single Threaded Execution 패턴을 사용합니다.

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