版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Java語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章8.1 8.1 多線程編程概述多線程編程概述8.2 8.2 線程的創(chuàng)建線程的創(chuàng)建8.3 8.3 線程的優(yōu)先級(jí)線程的優(yōu)先級(jí)8.4 8.4 線程同步線程同步8.5 8.5 線程間通信線程間通信8.6 8.6 線程的控制線程的控制ReturnJava語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章8.1.1 8.1.1 什么是多線程什么是多線程8.1.2 Java8.1.2 Java線程模型線程模型ReturnJava語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章Return 多線程程序比多進(jìn)程程序需要更少的管理費(fèi)用。進(jìn)程是重量級(jí)的任務(wù),需要分配給它們獨(dú)立的地址空間。進(jìn)程間通信
2、是昂貴和受限的。進(jìn)程間的轉(zhuǎn)換也是很需要花費(fèi)的。另一方面,線程是輕量級(jí)的選手。它們共享相同的地址空間并且共同分享同一個(gè)進(jìn)程。線程間通信是便宜的,線程間的轉(zhuǎn)換也是低成本的。當(dāng)Java程序使用多進(jìn)程任務(wù)處理環(huán)境時(shí),多進(jìn)程程序不受Java的控制,而多線程則受Java控制。 多線程可幫助你編寫(xiě)出CPU最大利用率的高效程序,使得空閑時(shí)間保持最低。這對(duì)Java運(yùn)行的交互式的網(wǎng)絡(luò)互連環(huán)境是至關(guān)重要的,因?yàn)榭臻e時(shí)間是公共的。例如,網(wǎng)絡(luò)的數(shù)據(jù)傳輸速率遠(yuǎn)低于計(jì)算機(jī)處理能力,而本地文件系統(tǒng)資源的讀寫(xiě)速度也遠(yuǎn)低于CPU的處理能力。當(dāng)然,用戶輸入也比計(jì)算機(jī)慢很多。在傳統(tǒng)的單線程環(huán)境中,程序必須等待每一個(gè)這樣的任務(wù)完成以后
3、才能執(zhí)行下一步盡管CPU有很多空閑時(shí)間。多線程使你能夠獲得并充分利用這些空閑時(shí)間。Java語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章 Java多線程的優(yōu)點(diǎn)就在于取消了主循環(huán)/輪詢機(jī)制。一個(gè)線程可以暫停而不影響程序的其他部分。例如,當(dāng)一個(gè)線程從網(wǎng)絡(luò)讀取數(shù)據(jù)或等待用戶輸入時(shí)產(chǎn)生的空閑時(shí)間可以被利用到其他地方。多線程允許活的循環(huán)在每一幀間隙中沉睡一秒而不暫停整個(gè)系統(tǒng)。在Java程序中出現(xiàn)線程阻塞,僅有一個(gè)線程暫停,其他線程繼續(xù)運(yùn)行。 線程存在多種狀態(tài)。線程可以正在運(yùn)行(running),只要獲得了CPU時(shí)間它就可以運(yùn)行;運(yùn)行的線程可以被掛起(suspend),并臨時(shí)中斷它的執(zhí)行;一個(gè)掛起的線程可以被恢復(fù)(
4、resume),允許它從停止的地方繼續(xù)運(yùn)行;一個(gè)線程可以在等待資源時(shí)被阻塞(block);在任何時(shí)候,線程可以被終止(terminate),這將立即中斷運(yùn)行。一旦終止,線程不能被恢復(fù)。線程的各狀態(tài)間關(guān)系見(jiàn)教材P190頁(yè)圖8-1所示。Java語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章1 1線程優(yōu)先級(jí)線程優(yōu)先級(jí)Java語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章Java語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章Return Java的多線程系統(tǒng)建立于Thread類、方法以及共伴接口Runnable基礎(chǔ)上。Thread類封裝了線程的執(zhí)行。既然不能直接引用運(yùn)行著的線程的狀態(tài),就要通過(guò)它的代理處理它。于是Thread 實(shí)例
5、產(chǎn)生了。為創(chuàng)建一個(gè)新的線程,程序中必須擴(kuò)展Thread 或?qū)崿F(xiàn)Runnable接口。Thread類定義了好幾種方法來(lái)幫助管理線程,見(jiàn)教材P192頁(yè)表8-1中所列。4 4ThreadThread類和類和RunnableRunnable接口接口Java語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章8.2.1 8.2.1 關(guān)于主線程關(guān)于主線程8.2.2 8.2.2 創(chuàng)建一個(gè)線程創(chuàng)建一個(gè)線程8.2.3 8.2.3 創(chuàng)建多線程創(chuàng)建多線程8.2.4 8.2.4 使用使用isAlive()isAlive()和和join()join()ReturnJava語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章ReturnJava語(yǔ)言程序
6、設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章創(chuàng)建線程最簡(jiǎn)單的方法就是創(chuàng)建一個(gè)實(shí)現(xiàn)Runnable 接口的類,Runnable抽象了一個(gè)執(zhí)行代碼單元??梢酝ㄟ^(guò)實(shí)現(xiàn)Runnable接口的方法創(chuàng)建每一個(gè)對(duì)象的線程。為實(shí)現(xiàn) Runnable 接口,一個(gè)類僅需實(shí)現(xiàn)一個(gè)run()的簡(jiǎn)單方法,該方法聲明如下:public void run()在run()中,可以定義代碼來(lái)構(gòu)建新的線程。重要的是:run()方法能夠像主線程那樣調(diào)用其他方法,引用其他類,聲明變量。僅有的不同是:run()在程序中確立另一個(gè)并發(fā)的線程執(zhí)行入口。當(dāng)run()返回時(shí),該線程結(jié)束。在已經(jīng)創(chuàng)建了實(shí)現(xiàn)Runnable接口的類以后,需要在類內(nèi)部實(shí)例化一個(gè)Th
7、read類的對(duì)象。Thread 類定義了好幾種構(gòu)造函數(shù)。我們會(huì)用到的如下:Thread(Runnable threadOb, String threadName)在該構(gòu)造函數(shù)中,threadOb是一個(gè)實(shí)現(xiàn)Runnable接口類的實(shí)例。這定義了線程執(zhí)行的起點(diǎn),新線程的名稱由threadName定義。建立新的線程后,它并不運(yùn)行直到調(diào)用其start()方法,該方法在Thread 類中定義。從本質(zhì)上講,start()執(zhí)行的是一個(gè)對(duì)run()的調(diào)用。start()方法聲明如下:void start( )下面我們分別對(duì)這兩種方法進(jìn)行介紹: 1 1實(shí)現(xiàn)實(shí)現(xiàn)RunnableRunnable接口接口Java語(yǔ)言
8、程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章Return 到這里,讀者可能會(huì)奇怪為什么Java有兩種創(chuàng)建子線程的方法,哪一種更好呢。所有的問(wèn)題都?xì)w于一點(diǎn)。Thread類定義了多種方法可以被派生類重載。對(duì)于所有的方法,唯一的必須被重載的是run()方法。這當(dāng)然是實(shí)現(xiàn)Runnable接口所需的同樣的方法。很多Java程序員認(rèn)為類僅在它們被加強(qiáng)或修改時(shí)被擴(kuò)展。因此,如果你不重載Thread的其他方法,最好只實(shí)現(xiàn)Runnable 接口,這當(dāng)然由自己決定。在本章的其他部分,我們應(yīng)用實(shí)現(xiàn)Runnable接口的類來(lái)創(chuàng)建線程。 3 3選擇合適的方法選擇合適的方法Java語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章ReturnJa
9、va語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章ReturnJava語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章ReturnJava語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章8.4.1 8.4.1 使用同步方法使用同步方法8.4.2 8.4.2 同步語(yǔ)句同步語(yǔ)句ReturnJava語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章ReturnJava語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章ReturnJava語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章8.5.1 Java8.5.1 Java中的線程通訊中的線程通訊8.5.2 8.5.2 關(guān)于死鎖關(guān)于死鎖ReturnJava語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章ReturnJava語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章ReturnJava語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)電子教案第08章8.6.1 8.6.1 掛起、恢復(fù)和終止線程掛起、恢復(fù)和終止線程8.6.2 Java 28.6.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)用退熱貼的材料和使用要點(diǎn)考核試卷
- Scoparone-Standard-生命科學(xué)試劑-MCE
- 非全日制從業(yè)人員勞動(dòng)合同(13篇)
- 2023年印江自治縣公辦中小學(xué)優(yōu)師計(jì)劃畢業(yè)生專項(xiàng)招聘筆試真題
- 蘇州大學(xué)《運(yùn)動(dòng)營(yíng)養(yǎng)學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 白酒勾兌課程設(shè)計(jì)
- 2024年泡沫陶瓷過(guò)濾材料項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告范稿
- 2024年套結(jié)機(jī)項(xiàng)目申請(qǐng)報(bào)告
- 病毒防疫工作研究報(bào)告
- 病害井蓋施工方案
- 招投標(biāo)咨詢合同文本
- 2025年中考語(yǔ)文復(fù)習(xí)之文言文閱讀
- 2024統(tǒng)編版(2024)道德與法治小學(xué)一年級(jí)上冊(cè)教學(xué)設(shè)計(jì)(附目錄)
- 2.2 直線的方程(分層練習(xí))(解析版)
- 《保密法》培訓(xùn)課件
- 北京市2024-2025學(xué)年高三上學(xué)期第二次普通高中學(xué)業(yè)水平合格性考試英語(yǔ)試卷 含解析
- 2024年全球 二次元移動(dòng)游戲市場(chǎng)研究報(bào)告-點(diǎn)點(diǎn)數(shù)據(jù)
- 第6課《我們神圣的國(guó)土》第1課時(shí)(教學(xué)設(shè)計(jì))-部編版道德與法治五年級(jí)上冊(cè)
- 綿陽(yáng)市高中2022級(jí)(2025屆)高三第一次診斷性考試(一診)物理試卷(含標(biāo)準(zhǔn)答案)
- 2024年廣西高考?xì)v史試卷真題(含答案解析)
- 正常流產(chǎn)護(hù)理查房模板
評(píng)論
0/150
提交評(píng)論