細心!用心!耐心!

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

          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 張金鵬 閱讀(429) 評論(0)  編輯  收藏 所屬分類: 多執行緒模式
          主站蜘蛛池模板: 通许县| 万全县| 利川市| 盐源县| 砀山县| 康平县| 大城县| 璧山县| 安宁市| 象山县| 德兴市| 都匀市| 汪清县| 永清县| 岗巴县| 沿河| 额敏县| 安吉县| 京山县| 青冈县| 石狮市| 岳阳市| 嘉兴市| 繁峙县| 靖远县| 益阳市| 鹰潭市| 巴青县| 嘉祥县| 福泉市| 辽中县| 秭归县| 富蕴县| 安新县| 双流县| 英德市| 旬阳县| 鹿泉市| 缙云县| 招远市| 南雄市|