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)  編輯  收藏 所屬分類: 多線程

          主站蜘蛛池模板: 安多县| 建德市| 保亭| 扎赉特旗| 甘孜| 芜湖县| 平阴县| 台前县| 云南省| 东海县| 宁阳县| 新泰市| 嘉善县| 台前县| 长宁区| 新河县| 绥德县| 丹棱县| 漳浦县| 岫岩| 年辖:市辖区| 定日县| 庆云县| 内丘县| 彭山县| 洪洞县| 万州区| 裕民县| 利津县| 九龙县| 新竹市| 荥阳市| 金阳县| 革吉县| 黄大仙区| 溧阳市| 灵石县| 扎鲁特旗| 汝阳县| 聊城市| 庆元县|