java程序員之旅eclipse開發(fā)技術詳解本書第9章_第1頁
java程序員之旅eclipse開發(fā)技術詳解本書第9章_第2頁
java程序員之旅eclipse開發(fā)技術詳解本書第9章_第3頁
java程序員之旅eclipse開發(fā)技術詳解本書第9章_第4頁
java程序員之旅eclipse開發(fā)技術詳解本書第9章_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第九章多線程線程是比較重要的一部分,多線程是操作系統(tǒng)的發(fā)展方向,他具有并發(fā)性和執(zhí)行效率高的特點。一個進程可以通過運行多個線程來并發(fā)的執(zhí)行多個任務。在實際的開發(fā)中,一般在安裝程序時,單擊“安裝”按鈕后,會在后臺運行一段時間,安裝的情況要反映在界面上,并且不能影響其他程序的運行,這樣就需要多線程,將前臺和后臺運行分開,作為分開的兩個線程運行。本章就主要介紹一下SWT中的線程開發(fā),以及解決開發(fā)中出現(xiàn)的的多線程問題。9.1創(chuàng)建線程線程的創(chuàng)建,主要包括創(chuàng)建主線程、實現(xiàn)Runnable接口和集成Thread類。本節(jié)主要介紹一下線程的創(chuàng)建,以及在線程創(chuàng)建中遇到的問題。9.1.1主線程主線程是在程序執(zhí)行時立刻運行,是所有線程中運行最早的線程,類似于類里面的main()方法,它還是產生其他子線程的線程,還需要利用他執(zhí)行各種線程的關閉動作,所以它也是最后完成的線程,由此可以看出,主線程的重要性。9.1.2實現(xiàn)Runnable接口創(chuàng)建線程創(chuàng)建線程的方法有兩種,一種是繼承Thread類,一種是實現(xiàn)Runnable接口。本節(jié)就主要介紹一下通過實現(xiàn)Runnable接口的方法創(chuàng)建線程。實現(xiàn)Runnable接口來創(chuàng)建線程,是線程最簡單的創(chuàng)建方法。實現(xiàn)Runnable接口,需要定義一個名為run()的無參方法,并且在方法內寫入實現(xiàn)方法即可,9.1.3繼承Thread類創(chuàng)建線程創(chuàng)建Thread類創(chuàng)建線程,當繼承Thread類時,必須重載run方法,run方法在這里也是新線程的入口,必須通過調用start()方法啟動線程,在Thread類中定義了很多方法,可以讓它的子類去重載,只有run方法是每個子類都必須重載的。Runnable中,只有實現(xiàn)一個run方法,如果不重載Thread類中的其他方法,是和Runnable相同的。實現(xiàn)Runnable方法體現(xiàn)了面向對象的設計思想,由于Java是單繼承的,所有在繼承其他的類是,就需要通過實現(xiàn)Runnable來實現(xiàn)創(chuàng)建線程。9.1.4多線程前面介紹的線程都是單線程,如果多個線程同時運行,就需要創(chuàng)建多個線程,然后依次調用start方法。新建了三個線程,并重載run()方法,三個線程分別創(chuàng)建一各for循環(huán),每間隔一定時間打印輸出打印一次。在主方法中,分別創(chuàng)建這三個類的對象,并調用start()方法開始執(zhí)行。9.2調度線程的調度就是定義如何交換任務,以及如何選擇下一個被執(zhí)行任務。對線程進行調度,可以通過其中的sleep()、yield()、join()和優(yōu)先級來完成。本節(jié)主要介紹線程的調度,以及其中用到的主要方法。9.2.1優(yōu)先級線程的優(yōu)先級用來判定何時運行某個線程。優(yōu)先級高的線程能夠夠比優(yōu)先級低的線程獲得更多的cpu時間,設置線程的優(yōu)先級,可以使用setPriority()方法來設置。使用方法為:其中有一個整型的參數(shù)level,它是用來設置優(yōu)先級的大小,優(yōu)先級最小的表示方法為MIN_PRIORITY,優(yōu)先級最大的表示方法為MAX_PRIORITY,level的值在1~10之間,也就是優(yōu)先級最小,level的值為1,優(yōu)先級最大時,level的值為10。9.2.2sleep方法在前面的例子中,已經多次涉及到了sleep()方法,它可以使線程強制進入睡眠狀態(tài),是一個靜態(tài)方法。可以使線程暫時停止。在sleep()使用時,可能會拋出InterruptedException異常,可以使用trycahch包圍,進行異常處理。在程序中使用到了線程構造器,線程中的構造器主要包括:Thread()Thread(Runnabletarget)Thread(Runnabletarget,Stringname)Thread(Stringname)Thread(ThreadGroupgroup,Runnabletarget)Thread(ThreadGroupgroup,Runnabletarget,Stringname)Thread(ThreadGroupgroup,Stringname)9.2.3join方法Join()方法又叫加入方法。就是讓一個線程跟隨在另一個線程之后運行,當一個線程運行結束后,再繼續(xù)來運行另一個線程。設置一個程序分別將三個線程的休眠時間改為1秒,在第二個線程中,循環(huán)到第五次的時候,加入線程1的join()方法,可以看到上圖中,在第六次以后,第一個線程和第三個線程交替運行,直到結束,之后再次運行第二個線程。9.2.4yield方法yield()方法又叫讓步,可以使當前運行的線程回到可運行的狀態(tài),讓具有相同優(yōu)先級的線程獲得運行的機會。稱yield方法為讓步方法,但其往往達不到讓步的效果,它只是讓當前的線程回到可以運行的狀態(tài)。9.3SWT線程前面介紹了一下線程的基礎知識,在SWT的線程開發(fā)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論