Thread_Per_Message 패턴
Design Patten/Java Thread Patten2007. 5. 16. 23:38
이 일은 해두어야 해요
문맥 : 쓰레드(Client)가 인스턴스(Host)의 메소드를 호출하고 있다고 합시다.
문제 : 메소드의 처리가 끝나기까지 Host에서 제어가 되돌아오지 않습니다. 메소드의 처리에 시간이 걸리면 응답성이 저하됩니다.
해결법
Host 중에 새로운 쓰레드를 기동합시다. 그리고 메소드가 해야 할 실제의 처리는 이 새로운 쓰레드에 맡기는 것입니다. 이것으로 Clinet 쓰레드는 곧장 다음의 처리로 넘어 갈 수 있습니다. 이렇게 되면 Client 코드는 그대로 있고 응답성을 높일 수 있습니다.
구현
자바에서는 손쉽게 쓰레드를 기동하기 위해서 익명 내부 클래스를 이용할 수 있습니다.
new Thread() {
public void run() {
helper.handle(count, c);
}
}.start();
관련
쓰레드의 기동에 걸리는 시간을 줄이고 싶을 때에는 Work Thread 패턴을 사용합니다.
처리의 결과를 Client에 되돌리고 싶을 때에는 Future 패턴을 사용합니다.
문맥 : 쓰레드(Client)가 인스턴스(Host)의 메소드를 호출하고 있다고 합시다.
문제 : 메소드의 처리가 끝나기까지 Host에서 제어가 되돌아오지 않습니다. 메소드의 처리에 시간이 걸리면 응답성이 저하됩니다.
해결법
Host 중에 새로운 쓰레드를 기동합시다. 그리고 메소드가 해야 할 실제의 처리는 이 새로운 쓰레드에 맡기는 것입니다. 이것으로 Clinet 쓰레드는 곧장 다음의 처리로 넘어 갈 수 있습니다. 이렇게 되면 Client 코드는 그대로 있고 응답성을 높일 수 있습니다.
구현
자바에서는 손쉽게 쓰레드를 기동하기 위해서 익명 내부 클래스를 이용할 수 있습니다.
new Thread() {
public void run() {
helper.handle(count, c);
}
}.start();
관련
쓰레드의 기동에 걸리는 시간을 줄이고 싶을 때에는 Work Thread 패턴을 사용합니다.
처리의 결과를 Client에 되돌리고 싶을 때에는 Future 패턴을 사용합니다.
- Java언어로 배우는 디자인 패턴 입문 -