Clean Code that Works.

먼저 교환권을 가져가세요

문맥 : 쓰레드(Client)가다른 쓰레드에 처리를 의뢰하고 있어 Client는 처리의 실행 결과도 얻고 싶다고 합시다.

문제 : 처리를 의뢰한 때에 실행 결과를 기다리고 있어 응답성이 저하되어 버리고 맙니다.

해결법
  우선 처리 결과와 같은 인터페이스(API)를 가진 Future를 만듭시다. 그리고 처리 개시의 시점에서 Future를 반환값으로 합니다. 처리 결과는 나중에 Future에 set합니다. 이렇게 하면 Client는Future를 경유해서 처리 결과를 좋아하는 타이밍으로 얻는(기다리는)것이 가능합니다. 이것이 Future 패턴입니다.

관련
  Client가 처리 결과를 기다리는 부분에서는 Guarded Suspention 패턴을 사용합니다.
  Future 패턴은 Thread-Per-Message 패턴으로 처리 결과를 얻고 싶을 때 사용합니다.
  Future 패턴은 Worker Thread 패턴으로 처리 결과를 얻고 싶을 때에 사용합니다.


- 자바로 배우는 디자인 패턴 입문 -