keep moving!

          We must not cease from exploration. And the end of all our exploring will be to arrive where we began and to know the place for the first time.
          隨筆 - 37, 文章 - 2, 評論 - 3, 引用 - 0

          導航

          <2008年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          blog收藏

          文件共享

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          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模式都可以提高主執行緒(界面)的回應性。



          張金鵬 2007-04-17 10:56 發表評論

          文章來源:http://www.aygfsteel.com/jesson2005/articles/111198.html

          posted on 2008-09-07 11:06 大石頭 閱讀(202) 評論(0)  編輯  收藏 所屬分類: 多線程

          主站蜘蛛池模板: 徐闻县| 南城县| 江津市| 余姚市| 阜康市| 海盐县| 崇信县| 沧州市| 旌德县| 余姚市| 灵川县| 宜黄县| 利川市| 张家界市| 朔州市| 长白| 固原市| 中江县| 新建县| 巴马| 梓潼县| 博罗县| 葫芦岛市| 抚宁县| 邵阳市| 安新县| 保山市| 柳林县| 凤凰县| 清涧县| 二连浩特市| 洪洞县| 象山县| 蕲春县| 宿州市| 崇阳县| 遂溪县| 双牌县| 阳新县| 即墨市| 常熟市|