細心!用心!耐心!

          吾非文人,乃市井一俗人也,讀百卷書,跨江河千里,故申城一游; 一兩滴辛酸,三四年學業,五六點粗墨,七八筆買賣,九十道人情。

          BlogJava 聯系 聚合 管理
            1 Posts :: 196 Stories :: 10 Comments :: 0 Trackbacks
          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模式都可以提高主執行緒(界面)的回應性。

          posted on 2007-04-17 10:56 張金鵬 閱讀(423) 評論(0)  編輯  收藏 所屬分類: 多執行緒模式
          主站蜘蛛池模板: 龙胜| 兴仁县| 高淳县| 关岭| 台安县| 图们市| 井冈山市| 军事| 定结县| 竹山县| 奈曼旗| 德钦县| 罗源县| 旬阳县| 通化县| 富民县| 太原市| 巴南区| 栾城县| 嵊泗县| 都安| 富阳市| 松溪县| 湟源县| 肃宁县| 嵊泗县| 青田县| 伊川县| 汝阳县| 永德县| 贡嘎县| 泽库县| 榆林市| 大港区| 威信县| 平舆县| 黑龙江省| 河东区| 蒙山县| 金华市| 大姚县|