版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Java語言程序設(shè)計實驗指導(dǎo)電子教案第08章8.1 8.1 多線程編程概述多線程編程概述8.2 8.2 線程的創(chuàng)建線程的創(chuàng)建8.3 8.3 線程的優(yōu)先級線程的優(yōu)先級8.4 8.4 線程同步線程同步8.5 8.5 線程間通信線程間通信8.6 8.6 線程的控制線程的控制ReturnJava語言程序設(shè)計實驗指導(dǎo)電子教案第08章8.1.1 8.1.1 什么是多線程什么是多線程8.1.2 Java8.1.2 Java線程模型線程模型ReturnJava語言程序設(shè)計實驗指導(dǎo)電子教案第08章Return 多線程程序比多進(jìn)程程序需要更少的管理費用。進(jìn)程是重量級的任務(wù),需要分配給它們獨立的地址空間。進(jìn)程間通信
2、是昂貴和受限的。進(jìn)程間的轉(zhuǎn)換也是很需要花費的。另一方面,線程是輕量級的選手。它們共享相同的地址空間并且共同分享同一個進(jìn)程。線程間通信是便宜的,線程間的轉(zhuǎn)換也是低成本的。當(dāng)Java程序使用多進(jìn)程任務(wù)處理環(huán)境時,多進(jìn)程程序不受Java的控制,而多線程則受Java控制。 多線程可幫助你編寫出CPU最大利用率的高效程序,使得空閑時間保持最低。這對Java運行的交互式的網(wǎng)絡(luò)互連環(huán)境是至關(guān)重要的,因為空閑時間是公共的。例如,網(wǎng)絡(luò)的數(shù)據(jù)傳輸速率遠(yuǎn)低于計算機(jī)處理能力,而本地文件系統(tǒng)資源的讀寫速度也遠(yuǎn)低于CPU的處理能力。當(dāng)然,用戶輸入也比計算機(jī)慢很多。在傳統(tǒng)的單線程環(huán)境中,程序必須等待每一個這樣的任務(wù)完成以后
3、才能執(zhí)行下一步盡管CPU有很多空閑時間。多線程使你能夠獲得并充分利用這些空閑時間。Java語言程序設(shè)計實驗指導(dǎo)電子教案第08章 Java多線程的優(yōu)點就在于取消了主循環(huán)/輪詢機(jī)制。一個線程可以暫停而不影響程序的其他部分。例如,當(dāng)一個線程從網(wǎng)絡(luò)讀取數(shù)據(jù)或等待用戶輸入時產(chǎn)生的空閑時間可以被利用到其他地方。多線程允許活的循環(huán)在每一幀間隙中沉睡一秒而不暫停整個系統(tǒng)。在Java程序中出現(xiàn)線程阻塞,僅有一個線程暫停,其他線程繼續(xù)運行。 線程存在多種狀態(tài)。線程可以正在運行(running),只要獲得了CPU時間它就可以運行;運行的線程可以被掛起(suspend),并臨時中斷它的執(zhí)行;一個掛起的線程可以被恢復(fù)(
4、resume),允許它從停止的地方繼續(xù)運行;一個線程可以在等待資源時被阻塞(block);在任何時候,線程可以被終止(terminate),這將立即中斷運行。一旦終止,線程不能被恢復(fù)。線程的各狀態(tài)間關(guān)系見教材P190頁圖8-1所示。Java語言程序設(shè)計實驗指導(dǎo)電子教案第08章1 1線程優(yōu)先級線程優(yōu)先級Java語言程序設(shè)計實驗指導(dǎo)電子教案第08章Java語言程序設(shè)計實驗指導(dǎo)電子教案第08章Return Java的多線程系統(tǒng)建立于Thread類、方法以及共伴接口Runnable基礎(chǔ)上。Thread類封裝了線程的執(zhí)行。既然不能直接引用運行著的線程的狀態(tài),就要通過它的代理處理它。于是Thread 實例
5、產(chǎn)生了。為創(chuàng)建一個新的線程,程序中必須擴(kuò)展Thread 或?qū)崿F(xiàn)Runnable接口。Thread類定義了好幾種方法來幫助管理線程,見教材P192頁表8-1中所列。4 4ThreadThread類和類和RunnableRunnable接口接口Java語言程序設(shè)計實驗指導(dǎo)電子教案第08章8.2.1 8.2.1 關(guān)于主線程關(guān)于主線程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()ReturnJava語言程序設(shè)計實驗指導(dǎo)電子教案第08章ReturnJava語言程序
6、設(shè)計實驗指導(dǎo)電子教案第08章創(chuàng)建線程最簡單的方法就是創(chuàng)建一個實現(xiàn)Runnable 接口的類,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í)行入口。當(dāng)run()返回時,該線程結(jié)束。在已經(jīng)創(chuàng)建了實現(xiàn)Runnable接口的類以后,需要在類內(nèi)部實例化一個Th
7、read類的對象。Thread 類定義了好幾種構(gòu)造函數(shù)。我們會用到的如下:Thread(Runnable threadOb, String threadName)在該構(gòu)造函數(shù)中,threadOb是一個實現(xiàn)Runnable接口類的實例。這定義了線程執(zhí)行的起點,新線程的名稱由threadName定義。建立新的線程后,它并不運行直到調(diào)用其start()方法,該方法在Thread 類中定義。從本質(zhì)上講,start()執(zhí)行的是一個對run()的調(diào)用。start()方法聲明如下:void start( )下面我們分別對這兩種方法進(jìn)行介紹: 1 1實現(xiàn)實現(xiàn)RunnableRunnable接口接口Java語言
8、程序設(shè)計實驗指導(dǎo)電子教案第08章Return 到這里,讀者可能會奇怪為什么Java有兩種創(chuàng)建子線程的方法,哪一種更好呢。所有的問題都?xì)w于一點。Thread類定義了多種方法可以被派生類重載。對于所有的方法,唯一的必須被重載的是run()方法。這當(dāng)然是實現(xiàn)Runnable接口所需的同樣的方法。很多Java程序員認(rèn)為類僅在它們被加強(qiáng)或修改時被擴(kuò)展。因此,如果你不重載Thread的其他方法,最好只實現(xiàn)Runnable 接口,這當(dāng)然由自己決定。在本章的其他部分,我們應(yīng)用實現(xiàn)Runnable接口的類來創(chuàng)建線程。 3 3選擇合適的方法選擇合適的方法Java語言程序設(shè)計實驗指導(dǎo)電子教案第08章ReturnJa
9、va語言程序設(shè)計實驗指導(dǎo)電子教案第08章ReturnJava語言程序設(shè)計實驗指導(dǎo)電子教案第08章ReturnJava語言程序設(shè)計實驗指導(dǎo)電子教案第08章8.4.1 8.4.1 使用同步方法使用同步方法8.4.2 8.4.2 同步語句同步語句ReturnJava語言程序設(shè)計實驗指導(dǎo)電子教案第08章ReturnJava語言程序設(shè)計實驗指導(dǎo)電子教案第08章ReturnJava語言程序設(shè)計實驗指導(dǎo)電子教案第08章8.5.1 Java8.5.1 Java中的線程通訊中的線程通訊8.5.2 8.5.2 關(guān)于死鎖關(guān)于死鎖ReturnJava語言程序設(shè)計實驗指導(dǎo)電子教案第08章ReturnJava語言程序設(shè)計實驗指導(dǎo)電子教案第08章ReturnJava語言程序設(shè)計實驗指導(dǎo)電子教案第08章8.6.1 8.6.1 掛起、恢復(fù)和終止線程掛起、恢復(fù)和終止線程8.6.2 Java 28.6.
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度農(nóng)民工工資拖欠專項整改協(xié)議3篇
- 減肥方法及其效果研究綜述
- 二零二五年度房產(chǎn)代持保密協(xié)議范本3篇
- 新生兒心肺復(fù)蘇知識
- 臨床引起雙硫侖樣反應(yīng)特點、診斷標(biāo)準(zhǔn)、分度、鑒別診斷及處理要點
- 二零二五年度信息安全管理責(zé)任承諾(含應(yīng)急預(yù)案)2篇
- 二零二五年度his系統(tǒng)與藥品供應(yīng)鏈系統(tǒng)對接合同
- 河南省商丘市(2024年-2025年小學(xué)六年級語文)統(tǒng)編版質(zhì)量測試(上學(xué)期)試卷及答案
- 黑龍江大慶市(2024年-2025年小學(xué)六年級語文)部編版能力評測((上下)學(xué)期)試卷及答案
- 貴州商學(xué)院《概率論與隨機(jī)過程》2023-2024學(xué)年第一學(xué)期期末試卷
- 2023年深國交入學(xué)考試英語模擬試題
- 2022年中國農(nóng)業(yè)銀行(廣東分行)校園招聘筆試試題及答案解析
- 品牌管理第五章品牌體驗課件
- 基于CAN通訊的儲能變流器并機(jī)方案及應(yīng)用分析報告-培訓(xùn)課件
- 保姆級別CDH安裝運維手冊
- 菌草技術(shù)及產(chǎn)業(yè)化應(yīng)用課件
- GB∕T 14527-2021 復(fù)合阻尼隔振器和復(fù)合阻尼器
- 隧道二襯、仰拱施工方案
- 顫?。ㄅ两鹕。┲嗅t(yī)護(hù)理常規(guī)
- 果膠項目商業(yè)計劃書(模板范本)
- 旋挖鉆成孔掏渣筒沉渣處理施工工藝
評論
0/150
提交評論