這篇文章將為大家詳細(xì)講解有關(guān)Swing中有幾種線程,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計制作、成都做網(wǎng)站、延平網(wǎng)絡(luò)推廣、重慶小程序開發(fā)公司、延平網(wǎng)絡(luò)營銷、延平企業(yè)策劃、延平品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供延平建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:jinyejixie.com
看到很多地方講述Swing中的并發(fā)和多線程問題,感覺講的都不如Sun的教程,這里復(fù)述一下關(guān)鍵。Swing之所以和多線程緊密聯(lián)系在一起是因為圖形界面編程中如果只采取順序編程(也就是你的代碼或任務(wù)依次執(zhí)行),會出現(xiàn)很大的問題,比如你要編寫一個FTP客戶端,你不能讓文件下載的時候,用戶界面死在那里,你既不能取消任務(wù)也不能和界面交互吧。所以有必要將耗時的任務(wù),比如文件下載放到一個獨立的線程中處理,而讓用戶同時能夠干其他事情。簡單來說,Swing中有三種線程:
1. 啟動Swing線程或者初始線程: 這個線程負(fù)責(zé)調(diào)用main方法,很多順序編程一開始就用的是這種線程。在Swing中啟動線程負(fù)責(zé)很少的事務(wù),主要干兩件事情,***件就是創(chuàng)建一個可運行的對象(Runnable Object),這個可運行對象的任務(wù)比較重要,它負(fù)責(zé)初始化圖形界面,第二件就是將這個可運行對象安排到另外一個非常重要的線程,事件分派線程中執(zhí)行。第二件事情是通過SwingUtilies的invokeLater和invokeAndWait方法來實現(xiàn)的。幾乎所有的創(chuàng)建Swing組件和與Swing組件交互的代碼都要在事件分派線程中執(zhí)行。
2. 事件分派Swing線程:在Swing中負(fù)責(zé)事件處理的代碼需要在一個特定的線程中運行,這個線程就是事件分派線程。大部分調(diào)用Swing方法的代碼也在這個線程中運行。原因是大部分Swing對象中的方法并不是線程安全的,所以需要這個特定的事件分派線程來保證線程安全。當(dāng)然也有部分swing對象中的方法指明是線程安全的,這些方法可以在任何線程中調(diào)用。你可以將事件分派線程中運行的代碼想象成一系列短小的任務(wù),大部分任務(wù)都是調(diào)用事件處理方法,例如ActionListener.actionPerformed()方法,其他任務(wù)可被程序代碼通過SwingUtilities 的invokeLater/invokeAndWait方法來安排。需要注意的是,在事件分派線程中的任務(wù)必須短小精悍,這意味著這些任務(wù)能夠很快執(zhí)行完畢,如果你發(fā)現(xiàn)有一個耗時的任務(wù),那么你肯定出錯了,你會發(fā)現(xiàn)你的圖形界面經(jīng)常被卡住,或者死掉了。對于耗時任務(wù)你需要另外一個線程,例如工作線程 (Worker Thread)來處理。判斷你的代碼時候運行在事件分派線程上的方法很簡單,使用javax.swing.SwingUtilities.isEventDispatchThread()方法即可。
3. 工作Swing線程(Worker Thread)或者后臺線程(Background Thread):你可以在這個線程中處理耗時任務(wù)。
關(guān)于“Swing中有幾種線程”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
網(wǎng)站題目:Swing中有幾種線程
本文網(wǎng)址:http://jinyejixie.com/article8/pggdop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站制作、用戶體驗、網(wǎng)站設(shè)計公司、手機(jī)網(wǎng)站建設(shè)、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)