首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Design Pattern: Thread-Per-Message 形式

2012-09-10 
Design Pattern: Thread-Per-Message 模式Thread-Per-Message模式是一个很简单但很常应用的模式,尤其是在G

Design Pattern: Thread-Per-Message 模式

Thread-Per-Message模式是一个很简单但很常应用的模式,尤其是在GUI程式中,我们举个例子,当您设计一个文件编辑器时,您可能像这样注册一个开启档案的事件处理:

?menuOpenFile.addActionListener(
??? new ActionListener() {
??????? public void actionPerformed(ActionEvent e) {
??????????? openFile();
??????? }
??? }
?);

?

openFile()方法中主要是开启档案、一行一行读档案文字并设定文字至文字区域中,这样设计基本上没有什么问题,例如果您的文件内容很长,在读档必须花费一些时间时,您会发现在档案读取完毕前,您的视窗会有明显的停顿现象。

?menuOpenFile.addActionListener(
??? new ActionListener() {
??????? public void actionPerformed(ActionEvent e) {
??????????? new Thread(new Runnable(){
??????????????? public void run() {
??????????????????? openFile();
??????????????? }
??????????? }).start();
??????? }
??? }
?);
?

在事件发生之后,您将档案处理的动作交由一个执行绪去执行,而事件处理执行绪直接回到回应事件的状态,如此即可解决视窗在载入档案时的停顿。

简单的说,Thread-Per-Message模式是在某个请求发生时,新增一个执行绪来执行该请求,而主执行绪继续往下执行,除了上面的载入档案例子之外,像是进行搜寻、字串转换之类需要一些时间来执行的工作时,使用Thread-Per-Message模式都可以提高主执行绪(界面)的回应性。

热点排行