概述
这项工作就交给你了。把工作交给别人处理后,就可以返回继续做自己的工作。
示例程序
Main 向Host发送字符显示请求的类
Host 针对请求创建线程的类
Helper 提供字符显示功能的被动类
Main 类
public class Main {
public static void main(String[] args) {
Host host = new Host();
host.request(10, ‘A');
host.request(20, 'B');
host.request(30, 'C');
System.out.println("main END");
}
}
Host 类
Host类的request方法启动了一个线程。实际操作将由该线程来执行。
public class Host {
private final Helper helper = new Helper();
public void request(final int count, final char c) {
System.out.println(" request(" + count + ", " + c + ") BEGIN");
new Thread() {
public void run() {
helper.handle(count, c);
}
}.start();
System.out.println(" request(" + count + ", " + c + ") END");
}
}
Helper 类
public class Helper {
public void handle(int count, char c) {
System.out.println(" handle(" + count + ", " + ") BEGIN");
for (int i = 0; i < count; i++ ) {
slowly();
System.out.print(c);
}
System.out.println("");
System.out.print(" handle(" + count + ", " + c + ") END";
}
private void slowly() {
try {
Thread.sleep(100);
} catch (InterruptedException e) {}
}
}
Thread-Per-Message 模式中的登场角色
- Client (委托人)
Client 角色会向Host 角色发出请求(request),但是并不知道是如何实现该请求的。在示例程序中,由Main类扮演。 - Host
Host角色收到Client角色的请求(request)之后,会新创建并启动一个线程。新创建的线程将使用Helper角色来“处理”(handle)请求,由 Host类扮演。 - Helper(助手)
Helper角色为Host角色提供请求处理的功能。Host角色创建新的线程会利用Helper角色。在示例程序中。由Helper类扮演。