Java語言程序設計實驗指導電子教案第08章學習教案_第1頁
Java語言程序設計實驗指導電子教案第08章學習教案_第2頁
Java語言程序設計實驗指導電子教案第08章學習教案_第3頁
Java語言程序設計實驗指導電子教案第08章學習教案_第4頁
Java語言程序設計實驗指導電子教案第08章學習教案_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、會計學1Java語言程序設計實驗指導電子教案第語言程序設計實驗指導電子教案第08章章第一頁,編輯于星期六:十六點 五十一分。8.1.1 8.1.1 什么是多線程什么是多線程8.1.2 Java8.1.2 Java線程模型線程模型Return第1頁/共24頁第二頁,編輯于星期六:十六點 五十一分。Return 多線程程序比多進程程序需要更少的管理費用。進程是重量級的任務,需要分配給它們獨立的地址空間。進程間通信是昂貴和受限的。進程間的轉換也是很需要花費的。另一方面,線程是輕量級的選手。它們共享相同的地址空間并且共同分享同一個進程。線程間通信是便宜的,線程間的轉換也是低成本的。當Java程序使用多

2、進程任務處理環(huán)境時,多進程程序不受Java的控制,而多線程則受Java控制。 多線程可幫助你編寫出CPU最大利用率的高效程序,使得空閑時間保持最低。這對Java運行的交互式的網絡互連環(huán)境是至關重要的,因為空閑時間是公共的。例如,網絡的數(shù)據(jù)傳輸速率遠低于計算機處理能力,而本地文件系統(tǒng)資源的讀寫速度也遠低于CPU的處理能力。當然,用戶輸入也比計算機慢很多。在傳統(tǒng)的單線程環(huán)境中,程序必須等待每一個這樣的任務完成以后才能執(zhí)行下一步盡管CPU有很多空閑時間。多線程使你能夠獲得并充分利用這些空閑時間。第2頁/共24頁第三頁,編輯于星期六:十六點 五十一分。 Java多線程的優(yōu)點就在于取消了主循環(huán)/輪詢機制

3、。一個線程可以暫停而不影響程序的其他部分。例如,當一個線程從網絡讀取數(shù)據(jù)或等待用戶輸入時產生的空閑時間可以被利用到其他地方。多線程允許活的循環(huán)在每一幀間隙中沉睡一秒而不暫停整個系統(tǒng)。在Java程序中出現(xiàn)線程阻塞,僅有一個線程暫停,其他線程繼續(xù)運行。 線程存在多種狀態(tài)。線程可以正在運行(running),只要獲得了CPU時間它就可以運行;運行的線程可以被掛起(suspend),并臨時中斷它的執(zhí)行;一個掛起的線程可以被恢復(resume),允許它從停止的地方繼續(xù)運行;一個線程可以在等待資源時被阻塞(block);在任何時候,線程可以被終止(terminate),這將立即中斷運行。一旦終止,線程不能

4、被恢復。線程的各狀態(tài)間關系見教材P190頁圖8-1所示。第3頁/共24頁第四頁,編輯于星期六:十六點 五十一分。1 1線程優(yōu)先級線程優(yōu)先級第4頁/共24頁第五頁,編輯于星期六:十六點 五十一分。第5頁/共24頁第六頁,編輯于星期六:十六點 五十一分。Return Java的多線程系統(tǒng)建立于Thread類、方法以及共伴接口Runnable基礎上。Thread類封裝了線程的執(zhí)行。既然不能直接引用運行著的線程的狀態(tài),就要通過它的代理處理它。于是Thread 實例產生了。為創(chuàng)建一個新的線程,程序中必須擴展Thread 或實現(xiàn)Runnable接口。Thread類定義了好幾種方法來幫助管理線程,見教材P1

5、92頁表8-1中所列。4 4ThreadThread類和類和RunnableRunnable接口接口第6頁/共24頁第七頁,編輯于星期六:十六點 五十一分。8.2.1 8.2.1 關于主線程關于主線程8.2.2 8.2.2 創(chuàng)建一個線程創(chuàng)建一個線程8.2.3 8.2.3 創(chuàng)建多線程創(chuàng)建多線程8.2.4 8.2.4 使用使用isAlive()isAlive()和和join()join()Return第7頁/共24頁第八頁,編輯于星期六:十六點 五十一分。Return第8頁/共24頁第九頁,編輯于星期六:十六點 五十一分。創(chuàng)建線程最簡單的方法就是創(chuàng)建一個實現(xiàn)Runnable 接口的類,Runnab

6、le抽象了一個執(zhí)行代碼單元??梢酝ㄟ^實現(xiàn)Runnable接口的方法創(chuàng)建每一個對象的線程。為實現(xiàn) Runnable 接口,一個類僅需實現(xiàn)一個run()的簡單方法,該方法聲明如下:public void run()在run()中,可以定義代碼來構建新的線程。重要的是:run()方法能夠像主線程那樣調用其他方法,引用其他類,聲明變量。僅有的不同是:run()在程序中確立另一個并發(fā)的線程執(zhí)行入口。當run()返回時,該線程結束。在已經創(chuàng)建了實現(xiàn)Runnable接口的類以后,需要在類內部實例化一個Thread類的對象。Thread 類定義了好幾種構造函數(shù)。我們會用到的如下:Thread(Runnable

7、 threadOb, String threadName)在該構造函數(shù)中,threadOb是一個實現(xiàn)Runnable接口類的實例。這定義了線程執(zhí)行的起點,新線程的名稱由threadName定義。建立新的線程后,它并不運行直到調用其start()方法,該方法在Thread 類中定義。從本質上講,start()執(zhí)行的是一個對run()的調用。start()方法聲明如下:void start( )下面我們分別對這兩種方法進行介紹: 1 1實現(xiàn)實現(xiàn)RunnableRunnable接口接口第9頁/共24頁第十頁,編輯于星期六:十六點 五十一分。Return 到這里,讀者可能會奇怪為什么Java有兩種創(chuàng)建

8、子線程的方法,哪一種更好呢。所有的問題都歸于一點。Thread類定義了多種方法可以被派生類重載。對于所有的方法,唯一的必須被重載的是run()方法。這當然是實現(xiàn)Runnable接口所需的同樣的方法。很多Java程序員認為類僅在它們被加強或修改時被擴展。因此,如果你不重載Thread的其他方法,最好只實現(xiàn)Runnable 接口,這當然由自己決定。在本章的其他部分,我們應用實現(xiàn)Runnable接口的類來創(chuàng)建線程。 3 3選擇合適的方法選擇合適的方法第10頁/共24頁第十一頁,編輯于星期六:十六點 五十一分。Return第11頁/共24頁第十二頁,編輯于星期六:十六點 五十一分。Return第12頁

9、/共24頁第十三頁,編輯于星期六:十六點 五十一分。Return第13頁/共24頁第十四頁,編輯于星期六:十六點 五十一分。8.4.1 8.4.1 使用同步方法使用同步方法8.4.2 8.4.2 同步語句同步語句Return第14頁/共24頁第十五頁,編輯于星期六:十六點 五十一分。Return第15頁/共24頁第十六頁,編輯于星期六:十六點 五十一分。Return第16頁/共24頁第十七頁,編輯于星期六:十六點 五十一分。8.5.1 Java8.5.1 Java中的線程通訊中的線程通訊8.5.2 8.5.2 關于死鎖關于死鎖Return第17頁/共24頁第十八頁,編輯于星期六:十六點 五十一分。Return第18頁/共24頁第十九頁,編輯于星期六:十六點 五十一分。Return第19頁/共24頁第二十頁,編輯于星期六:十六點 五十一分。8.6.1 8.6.1 掛起、恢復和終止線程掛起、恢復和終止線程8.6.2 Java 28.6.2 Java 2中的線程控制中的線程控制8.6.3 8.6.3 使用使用instanceofinstanc

溫馨提示

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

評論

0/150

提交評論