91在线一级黄片|91视频在线观看18|成人夜间呦呦网站|91资源欧美日韩超碰|久久最新免费精品视频一区二区三区|国产探花视频在线观看|黄片真人免费三级片毛片|国产人无码视频在线|精品成人影视无码三区|久久视频爱久久免费精品

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
介紹Swing線程相關(guān)處理

我們知道這將在非Swing線程中調(diào)用,因?yàn)樵撌录侵苯釉贚ookupManager中觸發(fā)的,這將不是在Swing線程中執(zhí)行。因?yàn)樗械拇a功能上都是異步的(我們不必等待監(jiān)聽(tīng)器方法允許結(jié)束后才調(diào)用其它代碼),我們可以通過(guò)SwingUtilities.invokeLater()將這些代碼改道到Swing線程。下面是新的方法,傳入一個(gè)匿名Runnable到SwingUtilities.invokeLater():

定日ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!

 
 
 
  1. public void lookupCompleted(final LookupEvent e) {  
  2.  //notice the threading  
  3.  SwingUtilities.invokeLater( new Runnable() {  
  4.   public void run() {  
  5.    outputTA.setText("");  
  6.    String[] results = e.getResults();  
  7.    for (int i = 0; i < results.length; i++) {  
  8.     String result = results[i];  
  9.     outputTA.setText(outputTA.getText() + " " + result);  
  10.    }  
  11.   }  
  12.  }  
  13. );  
  14. }  

如果任何LookupListener不是在Swing線程中執(zhí)行,我們可以在調(diào)用線程中執(zhí)行監(jiān)聽(tīng)器代碼。作為一個(gè)原則,我們希望所有的監(jiān)聽(tīng)器都迅速地接到通知。所以,如果你有一個(gè)監(jiān)聽(tīng)器需要很多時(shí)間來(lái)處理自己的功能,你應(yīng)該創(chuàng)建一個(gè)新的線程或者把耗時(shí)代碼放入ThreadPool中等待執(zhí)行。

最后的步驟是讓LookupManager在非Swing線程中執(zhí)行l(wèi)ookup。當(dāng)前,LookupManager是在JButton的 ActionListener的Swing線程中被調(diào)用的。現(xiàn)在是我們做出決定的時(shí)候,或者我們?cè)贘Button的ActionListener中引入一個(gè)新的線程,或者我們可以保證lookup自己在非Swing線程中執(zhí)行,自己開(kāi)始一個(gè)新的線程。我選擇盡可能和Swing類貼近地管理Swing線程。這有助于把所有Swing邏輯封裝在一起。如果我們把Swing線程邏輯添加到LookupManager,我們將引入了一層不必要的依賴。并且,對(duì)于 LookupManager在非Swing線程環(huán)境中孵化自己的線程是完全沒(méi)有必要的,比如一個(gè)非繪圖的用戶界面,在我們的例子中,就是Logger。產(chǎn)生不必要的新線程將損害到你應(yīng)用的性能,而不是提高性能。LookupManager執(zhí)行的很好,不管Swing線程與否--所以,我喜歡把代碼集中在那兒。

現(xiàn)在我們需要將JButton的ActionListener執(zhí)行l(wèi)ookup的代碼放在一個(gè)非Swing線程中。我們創(chuàng)建一個(gè)匿名的Thread,使用一個(gè)匿名的Runnable執(zhí)行這個(gè)lookup。

 
 
 
  1. private void searchButton_actionPerformed() {  
  2.  new Thread(){  
  3.   public void run() {  
  4.    lookupManager.lookup(searchTF.getText());  
  5.   }  
  6.  }.start();  
  7. }  

這就完成了我們的Swing線程。簡(jiǎn)單地在actionPerformed()方法中添加線程,確保監(jiān)聽(tīng)器在新的線程中執(zhí)行照顧到了整個(gè)線程問(wèn)題。注意,我們不用處理像第一個(gè)例子那樣的任何問(wèn)題。通過(guò)把時(shí)間花費(fèi)在定義一個(gè)事件驅(qū)動(dòng)的體系,我們?cè)诤蚐wing線程相關(guān)處理上節(jié)約了更多的時(shí)間。


本文題目:介紹Swing線程相關(guān)處理
URL地址:http://m.jiaoqi3.com/article/dppjdhh.html