zoukankan      html  css  js  c++  java
  • 设计模式多线程方面之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();
            }
        }
     );
     

    在事件发生之后,您将档案处理的动作交由一个执行绪去执行,而事件处理执行绪直接回到回应事件的状态,如此即可解决视窗在载入档案时的停顿。(执行绪好像是TW的翻译,内地应该是线程Thread)

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

    转自:

    http://www.riabook.cn/doc/designpattern/ThreadPerMessage.htm

    http://openhome.cc/Gossip/DesignPattern/ThreadPerMessage.htm

     详细:http://blog.csdn.net/gaomatrix/article/details/7003798

  • 相关阅读:
    java环境的介绍
    java的介绍
    java编程的思考
    雷达恒虚警率算法---OS-CFAR
    美团笔试-第二题最大汉明距离:
    美团笔试题第一题
    差分反射率的三种标定方法 信号源法 太阳法 降雨法
    有源定标和无源定标
    ocis code中英文
    ES全量索引校验-python
  • 原文地址:https://www.cnblogs.com/youxin/p/3191049.html
Copyright © 2011-2022 走看看