为每个命令或请求新分配一个线程,由这个线程来执行处理。在Thread-Per-Message模式中,消息的“委托端”和“执行端”是不同的线程。
示例
Main类委托Host类来显示字符。Host类会创建并启动一个线程,来处理该委托。启动的线程使用Helper类来执行实际的显示。
类图
时序图
Timethreads图
Main.java
1 | public class Main { |
Host.java
匿名内部类用于执行如下操作:
- 声明Thread的子类,并重写run方法
- 创建该类的实例
- 调用该实例的start方法启动线程
1 | public class Host { |
Helper.java
1 | public class Helper { |
运行结果
1 | main BEGIN |
登场角色
Client(委托人)
Client角色会向Host角色发出请求(request),但是并不知道Host角色是如何实现该请求的。在示例程序中,由Main类扮演此角色。
Host
Host角色收到Client角色的请求(request)之后,会创建并启动一个线程。新创建的线程将使用Helper角色来“处理”(handle)请求。在示例程序中,由Host类扮演此角色。
Helper(助手)
Helper角色为Host角色提供请求处理的功能。Host角色创建的新线程会利用Helper角色。在示例程序中,由Helper类扮演此角色。