日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

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

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

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

 
 
 
  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)聽器代碼。作為一個(gè)原則,我們希望所有的監(jiān)聽器都迅速地接到通知。所以,如果你有一個(gè)監(jiān)聽器需要很多時(shí)間來處理自己的功能,你應(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í)候,或者我們在JButton的ActionListener中引入一個(gè)新的線程,或者我們可以保證lookup自己在非Swing線程中執(zhí)行,自己開始一個(gè)新的線程。我選擇盡可能和Swing類貼近地管理Swing線程。這有助于把所有Swing邏輯封裝在一起。如果我們把Swing線程邏輯添加到LookupManager,我們將引入了一層不必要的依賴。并且,對于 LookupManager在非Swing線程環(huán)境中孵化自己的線程是完全沒有必要的,比如一個(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線程。簡單地在actionPerformed()方法中添加線程,確保監(jiān)聽器在新的線程中執(zhí)行照顧到了整個(gè)線程問題。注意,我們不用處理像第一個(gè)例子那樣的任何問題。通過把時(shí)間花費(fèi)在定義一個(gè)事件驅(qū)動(dòng)的體系,我們在和Swing線程相關(guān)處理上節(jié)約了更多的時(shí)間。


新聞標(biāo)題:介紹Swing線程相關(guān)處理
網(wǎng)站URL:http://www.dlmjj.cn/article/dppjdhh.html