隨筆 - 18  文章 - 96  trackbacks - 0
          <2007年11月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678


          常用鏈接

          留言簿(4)

          隨筆檔案

          相冊

          我的兄弟們

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          Swing作為一個完整的UI解決方案,包含了一個GUI程序所擁有的方方面面,當然包括作為普通程序也好,作為GUI程序也好,作為Web程序等等程序都共有的線程概念。

          Swing中的線程有三種:初始線程,事件線程,工作線程

          這三種線程基本上包括了讓一個GUI完美工作的方方面面,首先,初始線程被用來創建GUI組件、資源加載和啟動GUI組件,眾所周知,Swing是事件驅動的,所以當UI出現了之后,初始線程就完成了它的使命,并將接力棒交給了事件線程,Event Dispatch Thread,這個時候所有組件的事件行為都交給了這個線程去處理,當然我們自己也要需要用線程來運行許多任務,優秀的GUI程序是絕不能讓界面被卡死不動的,那會讓用戶崩潰,所以這個時候就需要工作線程了,也可以說是在背后運行的線程,這種線程是勞動階級,任勞任怨的執行者長時間的工作。

          初始線程的寫法很簡單,這樣就可以了:
          SwingUtilities.invokeLater(new Runnable() {
              
          public void run() {
                  initGUI();
                  showGUI();
              }
          }

          但是Applet中,你可能需要調用SwingUtilities.invokeAndWait這個方法,要是init方法返回了,瀏覽器開始展現Applet,但是GUI的創建還在thread中,出錯也是可想而知的。
          至于invokeLater和invokeAndWait這兩個線程的簡單點的區別就是invokeLater是異步的,你不知道它什么時候會開始執行,invokeAndWait則是同步的,它會等到動作執行完成之后才返回。

          Event Dispatch Thread不是線程安全的,所以要用線程來與它打交道要注意了,同步問題總是讓人頭痛。

          在1.5之前應該說工作線程都是由開發人員自己去定義的,但是現在Swing推薦了SwingWorker這個類,包括Swing最新的符合JSR標準的Swing AppFramework也使用了SwingWorker這個類來處理所有在GUI背后做的事情。

          了解了Swing中的線程定義,能夠讓我們更好的寫出優美的基于Swing的GUI程序。

          posted on 2007-11-04 12:40 ruislan 閱讀(1275) 評論(2)  編輯  收藏

          FeedBack:
          # re: Swing中的線程[未登錄] 2007-11-04 13:56 diego
          5D壁紙, http://5d6p.5d6d.com 中國最好的壁紙論壇  回復  更多評論
            
          # re: Swing中的線程 2007-11-04 22:27 sitinspring
          留個記號先.  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 阜新市| 黑水县| 泸溪县| 沙雅县| 彰武县| 聂荣县| 芦溪县| 周宁县| 上蔡县| 景洪市| 平塘县| 赞皇县| 丰城市| 衡阳县| 陇川县| 屯昌县| 普兰店市| 古交市| 道真| 洛浦县| 宝兴县| 祁门县| 榆林市| 铅山县| 呼图壁县| 南华县| 若尔盖县| 海安县| 东阿县| 商洛市| 嘉荫县| 威远县| 广西| 邹城市| 长武县| 新源县| 阜城县| 樟树市| 中方县| 平度市| 江门市|