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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、會計學1Java語言語言(yyn)程序設(shè)計實驗指導(dǎo)電子教程序設(shè)計實驗指導(dǎo)電子教案第案第08章章第一頁,共25頁。8.1.1 8.1.1 什么什么(shn me)(shn me)是是多線程多線程8.1.2 Java8.1.2 Java線程模型線程模型Return第1頁/共24頁第二頁,共25頁。Return 多線程程序比多進程程序需要更少的管理費用。進程是重量級的任務(wù),需要分配給它們獨立(dl)的地址空間。進程間通信是昂貴和受限的。進程間的轉(zhuǎn)換也是很需要花費的。另一方面,線程是輕量級的選手。它們共享相同的地址空間并且共同分享同一個進程。線程間通信是便宜的,線程間的轉(zhuǎn)換也是低成本的。當Java程序

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

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

4、運行。一旦終止,線程不能被恢復(fù)。線程的各狀態(tài)間關(guān)系見教材P190頁圖8-1所示。第3頁/共24頁第四頁,共25頁。1 1線程優(yōu)先級線程優(yōu)先級第4頁/共24頁第五頁,共25頁。第5頁/共24頁第六頁,共25頁。Return Java的多線程系統(tǒng)建立于Thread類、方法以及共伴接口Runnable基礎(chǔ)上。Thread類封裝了線程的執(zhí)行。既然不能直接引用運行著的線程的狀態(tài),就要(ji yo)通過它的代理處理它。于是Thread 實例產(chǎn)生了。為創(chuàng)建一個新的線程,程序中必須擴展Thread 或?qū)崿F(xiàn)Runnable接口。Thread類定義了好幾種方法來幫助管理線程,見教材P192頁表8-1中所列。4 4

5、ThreadThread類和類和RunnableRunnable接口接口(ji ku)(ji ku)第6頁/共24頁第七頁,共25頁。8.2.1 8.2.1 關(guān)于主線程關(guān)于主線程8.2.2 8.2.2 創(chuàng)建創(chuàng)建(chungjin)(chungjin)一個線程一個線程8.2.3 8.2.3 創(chuàng)建創(chuàng)建(chungjin)(chungjin)多線程多線程8.2.4 8.2.4 使用使用isAlive()isAlive()和和join()join()Return第7頁/共24頁第八頁,共25頁。Return第8頁/共24頁第九頁,共25頁。創(chuàng)建線程最簡單的方法就是創(chuàng)建一個實現(xiàn)Runnable 接口的類

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

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

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

9、5頁。Return第13頁/共24頁第十四頁,共25頁。8.4.1 8.4.1 使用使用(shyng)(shyng)同步方法同步方法8.4.2 8.4.2 同步語句同步語句Return第14頁/共24頁第十五頁,共25頁。Return第15頁/共24頁第十六頁,共25頁。Return第16頁/共24頁第十七頁,共25頁。8.5.1 Java8.5.1 Java中的線程通訊中的線程通訊(tngxn)(tngxn)8.5.2 8.5.2 關(guān)于死鎖關(guān)于死鎖Return第17頁/共24頁第十八頁,共25頁。Return第18頁/共24頁第十九頁,共25頁。Return第19頁/共24頁第二十頁,共25頁。8.6.1 8.6.1 掛起、恢復(fù)掛起、恢復(fù)(huf)(huf)和終和終止線程止線程8.6.2 Java 28.6.2 Java 2中的線程控制中的線程控制8.6.3 8.6.3 使用使用instanceofinstanceofReturn第20頁/共24頁第二十一頁,共25頁。Return第21頁/共24頁第二十二頁,共25頁。Return第22頁/共24頁第二十三頁,共25頁。Return第23頁/共24頁第二十四頁,共25頁。NoImage內(nèi)容(nirng)總結(jié)會計學。然而,多任務(wù)處理有兩種截然不同的類型:基于進程的和基于線程的。搞清楚兩者的區(qū)別是很重要(zhngyo)的。因

溫馨提示

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

最新文檔

評論

0/150

提交評論