91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Swing中有幾種線程

發布時間:2021-12-03 10:33:57 來源:億速云 閱讀:119 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關Swing中有幾種線程,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

看到很多地方講述Swing中的并發和多線程問題,感覺講的都不如Sun的教程,這里復述一下關鍵。Swing之所以和多線程緊密聯系在一起是因為圖形界面編程中如果只采取順序編程(也就是你的代碼或任務依次執行),會出現很大的問題,比如你要編寫一個FTP客戶端,你不能讓文件下載的時候,用戶界面死在那里,你既不能取消任務也不能和界面交互吧。所以有必要將耗時的任務,比如文件下載放到一個獨立的線程中處理,而讓用戶同時能夠干其他事情。簡單來說,Swing中有三種線程:

1. 啟動Swing線程或者初始線程: 這個線程負責調用main方法,很多順序編程一開始就用的是這種線程。在Swing中啟動線程負責很少的事務,主要干兩件事情,***件就是創建一個可運行的對象(Runnable Object),這個可運行對象的任務比較重要,它負責初始化圖形界面,第二件就是將這個可運行對象安排到另外一個非常重要的線程,事件分派線程中執行。第二件事情是通過SwingUtilies的invokeLater和invokeAndWait方法來實現的。幾乎所有的創建Swing組件和與Swing組件交互的代碼都要在事件分派線程中執行。

2. 事件分派Swing線程:在Swing中負責事件處理的代碼需要在一個特定的線程中運行,這個線程就是事件分派線程。大部分調用Swing方法的代碼也在這個線程中運行。原因是大部分Swing對象中的方法并不是線程安全的,所以需要這個特定的事件分派線程來保證線程安全。當然也有部分swing對象中的方法指明是線程安全的,這些方法可以在任何線程中調用。你可以將事件分派線程中運行的代碼想象成一系列短小的任務,大部分任務都是調用事件處理方法,例如ActionListener.actionPerformed()方法,其他任務可被程序代碼通過SwingUtilities 的invokeLater/invokeAndWait方法來安排。需要注意的是,在事件分派線程中的任務必須短小精悍,這意味著這些任務能夠很快執行完畢,如果你發現有一個耗時的任務,那么你肯定出錯了,你會發現你的圖形界面經常被卡住,或者死掉了。對于耗時任務你需要另外一個線程,例如工作線程 (Worker Thread)來處理。判斷你的代碼時候運行在事件分派線程上的方法很簡單,使用javax.swing.SwingUtilities.isEventDispatchThread()方法即可。

3. 工作Swing線程(Worker Thread)或者后臺線程(Background Thread):你可以在這個線程中處理耗時任務。

關于“Swing中有幾種線程”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

土默特右旗| 富阳市| 阿拉善右旗| 台东市| 鄱阳县| 旌德县| 巩留县| 肃北| 卓尼县| 印江| 固镇县| 陵川县| 汶上县| 微博| 新田县| 亚东县| 天长市| 铜川市| 朝阳县| 邵阳县| 民乐县| 城步| 海兴县| 福清市| 苏尼特左旗| 资阳市| 靖边县| 曲水县| 洪雅县| 石首市| 宁津县| 高安市| 教育| 廉江市| 济源市| 高淳县| 辽阳市| 麻栗坡县| 双流县| 大城县| 新兴县|