Clean Code that Works.

일이 올 때까지 기다리고 일이 오면 일한다.

별명 : Thread Pool, Background Thread

문맥 : 쓰레드(Client)가 인스턴스(Host)의 메소드를 호출하고 있다고 합시다.

문제
  메소드의 처리에 시간이 걸리면 응답성이 낮아지게 됩니다. 응답성을 높이기 위해서 새로운 쓰레드를 기동해서 메소드를 처리시키면 쓰레드 기동의 시간만큼 스루풋은 저하됩니다. 또 다수의 리퀘스트를 내면 다수의 쓰레드가 기동하게 되어 버려서 용량을 저하시킵니다.

해결법
  우선 처리를 실행하는 쓰레드(워커 쓰레드)를 사전에 기동해 둡시다. 그리고 리퀘스트를 표현하는 인스턴스를 워커 쓰레드에 건네는 것입니다. 그렇게 하면 새로운 쓰레드를 매회 기동할 필요가 없게 됩니다.

관련
  워커 쓰레드의 처리 결과를 호출하는 측에 건내줄 때에는 Future 패턴을 사용합니다.
  리퀘스트를 표현하는 인스턴스를 워커 쓰레드에 건내줄 떼에는 Producer-Consumer 패턴을 사용합니다.

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