成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Swing線程解決方案

開發 后端
本文闡述了如何在開發Swing應用中使用事件驅動編程,以大大簡化開發、維護,并提供高靈活性。

不正確的Swing線程是運行緩慢、無響應和不穩定的Swing應用的主要原因之一。這是許多原因造成的,從開發人員對Swing單線程模型的誤解,到保證正確的線程執行的困難。即使對Swing線程進行了很多努力,應用線程邏輯也是很難理解和維護的。本文闡述了如何在開發Swing應用中使用事件驅動編程,以大大簡化開發、維護,并提供高靈活性。

既然我們是要簡化Swing應用的線程,首先讓我們來看看 Swing線程是怎么工作的,為什么它是必須的。Swing API是圍繞單線程模型設計的。這意味著Swing組件必須總是通過同一個線程來修改和操縱。為什么采用單線程模型,這有很多原因,包括開發成本和同步 Swing的復雜性--這都會造成一個遲鈍的API。為了達到單線程模型,有一個專門的線程用于和Swing組件交互。這個線程就是大家熟知的Swing線程,AWT(有時也發音為“ought”)線程,或者事件分派線程。在本文的下面的部分,我選用Swing線程的叫法。
既然Swing線程是和 Swing組件進行交互的唯一的線程,它就被賦予了很多責任。所有的繪制和圖形,鼠標事件,組件事件,按鈕事件,和所有其它事件都發生在Swing線程。因為Swing線程的工作已經非常沉重了,當太多其它工作在Swing線程中進行處理時就會發生問題。會引起這個問題的最常見的位置是在非Swing處理的地方,像發生在一個事件監聽器方法中,比如JButton的ActionListener,的數據庫查找。既然ActionListener的 actionPerformed()方法自動在Swing線程中執行,那么,數據庫查找也將在Swing線程中執行。這將占用了Swing的工作,阻止它處理它的其它任務--像繪制,響應鼠標移動,處理按鈕事件,和應用的縮放。用戶以為應用死掉了,但實際上并不是這樣。在適當的線程中執行代碼對確保系統正常地執行非常重要。

既然我們已經看到了在適當的線程中執行Swing應用的代碼是多么重要,現在讓我們如何實現這些線程。我們看看將代碼放入和移出Swing線程的標準機制。在講述過程中,我將突出幾個和標準機制有關的問題和難點。正如我們看到的,大部分的問題都來自于企圖在異步的Swing線程模型上實現同步的代碼模型。從那兒,我們將看到如何修改我們的例子到事件驅動--移植整個方式到異步模型。
通用Swing線程解決方案

讓我們以一個最常用的Swing線程錯誤開始。我們將企圖使用標準的技術來修正這個問題。在這個過程中,我們將看到實現正確的Swing線程的復雜性和常見困難。并且,注意在修正這個Swing線程問題中,許多中間的例子也是不能工作的。在例子中,我在代碼失敗的地方以//broken開頭標出。好了,現在,讓我們進入我們的例子吧。

假設我們在執行圖書查找。我們有一個簡單的用戶界面,包括一個查找文本域,一個查找按鈕,和一個輸出的文本區域。不要批評我的UI設計,這個確實很丑陋,我承認。

用戶輸入書的標題,作者或者其它條件,然后顯示一個結果的列表。下面的代碼例子演示了按鈕的ActionListener在同一個線程中調用 lookup()方法。在這些例子中,我使用了thread.sleep()休眠5秒來作為一個占位的外部查找。線程休眠的結果等同于一個耗時5秒的同步的服務器調用。

  1. private void searchButton_actionPerformed()  
  2. {  
  3.  outputTA.setText("Searching for: " + searchTF.getText());  
  4.  //Broken!! Too much work in the Swing  
  5.  thread String[] results = lookup(searchTF.getText());  
  6.  outputTA.setText("");  
  7.  for (int i = 0; i < results.length; i++)  
  8.  {  
  9.   String result = results[i];  
  10.   outputTA.setText(outputTA.getText() + ´´ ´´ + result);  
  11.   }  
  12. }  

【編輯推薦】

  1. 淺析Swing線程包括內容
  2. AWT或Swing混合環境中的事務處理
  3. Swing性能和Swing程序的學習
  4. 比較Swing和SWT的速度
  5. 淺談Swing構造JList
責任編輯:佚名 來源: 機械工業出版社
相關推薦

2009-09-14 19:39:14

批量線程同步

2012-05-27 16:21:31

IDC華為

2018-12-03 12:17:27

Semptian解決方案

2018-12-03 11:59:42

Inventec解決方案

2018-12-03 12:26:30

YADRO解決方案

2018-12-03 12:13:21

Mellanox解決方案

2012-05-18 11:17:58

Java多線程

2016-03-13 17:58:57

2011-12-09 11:13:17

2009-12-23 21:06:47

統一通信多媒體聯絡中心平臺華為

2016-03-13 17:35:18

2010-12-21 17:28:58

2012-05-27 17:01:36

華為云教育數據

2018-12-03 12:23:45

IBMMCM解決方案

2017-08-02 17:23:22

AzureIoTAWS

2010-12-21 17:38:12

2018-12-03 12:09:39

時速云解決方案

2018-12-03 12:04:10

Kyligence解決方案

2012-05-27 18:09:33

NAG Cache華為

2010-12-21 17:20:01

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.五月婷婷.com| 日韩成人在线看 | 日韩精品免费视频 | 精品国产一区二区在线 | 精品国产乱码久久久久久牛牛 | 日韩成人一区 | 久久精品久久久久久 | 国产成人精品免费视频大全最热 | 久久九九免费 | 精品国产一区三区 | 亚洲欧美一区二区三区国产精品 | 色婷婷久久综合 | 国产九九九九 | 亚洲国产成人久久综合一区,久久久国产99 | 日日日操| 天天视频成人 | 91精品国产综合久久久久久丝袜 | 久久尤物免费一区二区三区 | 亚洲精品乱码久久久久久蜜桃91 | 国产午夜精品福利 | 精品一区久久 | 国产精品69av | 九色视频网 | 日本不卡一区 | 国产91在线播放 | 亚洲一区二区三区免费在线观看 | 伊人网站| 欧美午夜精品理论片a级按摩 | 久久精品小视频 | 在线国产一区 | 超碰在线免费公开 | 成人做爰9片免费看网站 | 亚洲第一福利视频 | 国产精品99久久久久久久vr | 欧美1区 | 免费成人国产 | 亚洲网站在线播放 | chengrenzaixian | 久国久产久精永久网页 | 在线欧美一区 | 91麻豆精品国产91久久久久久久久 |