av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

介紹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ū)銷(xiāo)售渠道,可以享受市場(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)用的?,F(xiàn)在是我們做出決定的時(shí)候,或者我們?cè)贘Button的ActionListener中引入一個(gè)新的線程,或者我們可以保證lookup自己在非Swing線程中執(zhí)行,自己開(kāi)始一個(gè)新的線程。我選擇盡可能和Swing類(lèi)貼近地管理Swing線程。這有助于把所有Swing邏輯封裝在一起。如果我們把Swing線程邏輯添加到LookupManager,我們將引入了一層不必要的依賴(lài)。并且,對(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í)間。


網(wǎng)站名稱(chēng):介紹Swing線程相關(guān)處理
分享URL:http://uogjgqi.cn/article/dppjdhh.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流