Java多線程編程課件.ppt

Java多線程編程課件.ppt

ID:57057917

大?。?61.50 KB

頁(yè)數(shù):44頁(yè)

時(shí)間:2020-07-30

Java多線程編程課件.ppt_第1頁(yè)
Java多線程編程課件.ppt_第2頁(yè)
Java多線程編程課件.ppt_第3頁(yè)
Java多線程編程課件.ppt_第4頁(yè)
Java多線程編程課件.ppt_第5頁(yè)
資源描述:

《Java多線程編程課件.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、第八章Java語(yǔ)言多線程編程一、線程的概念二、線程的實(shí)現(xiàn)方法三、線程的同步與死鎖四、多線程程序?qū)嵗?、線程的概念進(jìn)程與線程進(jìn)程是指可執(zhí)行程序并存放在計(jì)算機(jī)存儲(chǔ)器空間的一個(gè)指令序列,它是一個(gè)動(dòng)態(tài)執(zhí)行的過(guò)程。進(jìn)程是計(jì)算機(jī)多任務(wù)操作系統(tǒng)為任務(wù)分配資源的最小單位,每個(gè)進(jìn)程都應(yīng)該有自己的內(nèi)存空間。線程同進(jìn)程一樣,也是一個(gè)動(dòng)態(tài)的概念和一個(gè)動(dòng)態(tài)的執(zhí)行過(guò)程,但是線程比進(jìn)程的內(nèi)涵要小一個(gè)等級(jí),一般一個(gè)進(jìn)程(應(yīng)用程序)包含一個(gè)或多個(gè)線程,線程需要在進(jìn)程的內(nèi)存地址空間中運(yùn)行,是多任務(wù)操作系統(tǒng)用于分配計(jì)算機(jī)CPU時(shí)間片的最小單位。一、

2、線程的概念一個(gè)Java多線程程序在Java虛擬機(jī)中執(zhí)行時(shí),每一個(gè)線程的執(zhí)行過(guò)程是由Java執(zhí)行系統(tǒng)的線程調(diào)度來(lái)控制的,Java語(yǔ)言多線程程序自身是不能控制每個(gè)線程執(zhí)行順序的。在目前的多任務(wù)操作系統(tǒng)中,當(dāng)一個(gè)單一線程被啟動(dòng)以后,它可以被掛起來(lái),被掛起的線程程序代碼并不從計(jì)算機(jī)內(nèi)存中清除,只是暫時(shí)不讓它執(zhí)行了,在內(nèi)存中被掛起的線程還可以重新被恢復(fù)執(zhí)行,以便保證實(shí)現(xiàn)多任務(wù)被同時(shí)處理。多任務(wù)操作系統(tǒng)在任何時(shí)間都可以停止或終止線程,被終止的線程程序代碼將被從計(jì)算機(jī)內(nèi)存中清除,被終止的線程是不能再重新恢復(fù)執(zhí)行的。一、線程的

3、概念線程調(diào)度與優(yōu)先級(jí)在CPU上以某種次序執(zhí)行多個(gè)線程稱為調(diào)度,調(diào)度使JVM對(duì)運(yùn)行的多個(gè)線程進(jìn)行協(xié)調(diào),以避免多個(gè)線程爭(zhēng)用有限的系統(tǒng)資源而導(dǎo)致系統(tǒng)死機(jī)或崩潰。為控制線程的協(xié)調(diào)運(yùn)行,Java定義了線程監(jiān)視器來(lái)監(jiān)控系統(tǒng)中處于就緒狀態(tài)的所有線程,線程調(diào)度采用“搶占式”策略,按照線程的優(yōu)先級(jí)別選擇線程獲得處理器。線程優(yōu)先級(jí)(Priority)告訴線程監(jiān)視器該線程的重要性,如果有大量線程被堵塞并等候運(yùn)行時(shí),線程監(jiān)視器按線程的優(yōu)先級(jí)別對(duì)線程排隊(duì),一旦空閑,線程監(jiān)視器會(huì)首先選擇運(yùn)行具有最高優(yōu)先級(jí)的那個(gè)線程。當(dāng)然這并不表示優(yōu)先級(jí)別

4、較低的線程不會(huì)運(yùn)行,即線程不會(huì)因?yàn)榇嬖趦?yōu)先級(jí)而導(dǎo)致死鎖。一、線程的概念Java將線程的優(yōu)先級(jí)分為10個(gè)等級(jí),分別用1~10之間的數(shù)字表示,數(shù)字越大表明線程的優(yōu)先級(jí)別越高。Thread類中定義了代表線程優(yōu)先級(jí)的三個(gè)靜態(tài)整型數(shù)據(jù)成員MIN_PRIORITY、MAX_PRIORITY和NORMAL_PRIORITY,分別對(duì)應(yīng)于線程的最高優(yōu)先級(jí)(10)、最低優(yōu)先級(jí)(1)和普通線程優(yōu)先級(jí)(5)。當(dāng)創(chuàng)建一個(gè)線程對(duì)象時(shí),其默認(rèn)的優(yōu)先級(jí)別是5。一個(gè)線程的優(yōu)先級(jí)別可以通過(guò)調(diào)用Thread類中的getPriority()方法來(lái)獲得

5、,而通過(guò)調(diào)用setPriority()方法可以改變一個(gè)線程的優(yōu)先級(jí)別。一、線程的概念線程的狀態(tài)與生命周期每個(gè)線程都與生命周期相關(guān)聯(lián),一個(gè)生命周期含有多個(gè)可以互相轉(zhuǎn)換的狀態(tài),線程從產(chǎn)生到消亡的生命周期中要經(jīng)歷創(chuàng)建、就緒、運(yùn)行、阻塞和死亡五種狀態(tài)。通過(guò)線程的控制與調(diào)度可使線程在這幾個(gè)狀態(tài)間轉(zhuǎn)換,每個(gè)Java程序中都擁有一個(gè)與main方法對(duì)應(yīng)的主線程,必須在主線程中創(chuàng)建新的線程。(1)創(chuàng)建狀態(tài):當(dāng)一個(gè)Thread類或其子類的對(duì)象被聲明并創(chuàng)建后,該線程對(duì)象就處于創(chuàng)建狀態(tài)。創(chuàng)建狀態(tài)是線程已經(jīng)創(chuàng)建但未開(kāi)始執(zhí)行的一個(gè)特殊狀態(tài)

6、。處于創(chuàng)建狀態(tài)的線程只是一個(gè)空的線程對(duì)象,系統(tǒng)不為它分配資源但有自己的內(nèi)存空間,通過(guò)調(diào)用start()方法進(jìn)入就緒狀態(tài)。一、線程的概念(2)就緒狀態(tài):處于就緒狀態(tài)的線程已經(jīng)具備運(yùn)行條件但還未獲得時(shí)間片,因此進(jìn)入線程隊(duì)列,等待系統(tǒng)為其分配CPU。一旦獲得CPU,該線程便進(jìn)入運(yùn)行狀態(tài)并自動(dòng)調(diào)用自己的Run()方法。(3)運(yùn)行狀態(tài):當(dāng)就緒狀態(tài)的線程被調(diào)度并獲得處理器資源時(shí)便進(jìn)入運(yùn)行狀態(tài),這時(shí)開(kāi)始執(zhí)行run()方法中的代碼,直到調(diào)用其他方法而終止,或等待某資源而阻塞,或運(yùn)行完畢而死亡。(4)堵塞狀態(tài):處于運(yùn)行狀態(tài)的線程

7、在某些情況下,如執(zhí)行睡眠方法或等待I/O設(shè)備操作時(shí),將讓出CPU并暫時(shí)終止自己的運(yùn)行進(jìn)入阻塞狀態(tài)。阻塞時(shí)線程不能進(jìn)入就緒隊(duì)列,只有當(dāng)引起阻塞的原因消除時(shí),線程才可以轉(zhuǎn)入就緒狀態(tài),重新進(jìn)入線程隊(duì)列等待調(diào)度。(5)死亡狀態(tài):死亡狀態(tài)是線程生命周期的最后一個(gè)階段,表示線程已經(jīng)退出運(yùn)行狀態(tài)并且不再進(jìn)入就緒隊(duì)列。當(dāng)線程的run()方法結(jié)束或由于其它原因被終止后,線程便進(jìn)入消亡狀態(tài)。線程的終止分為兩種形式:一是自然死亡即線程的run()方法正常結(jié)束,二是強(qiáng)制終止線程,如調(diào)用destory()或stop()命令終止線程。一、

8、線程的概念一個(gè)線程的生命周期分為生成、運(yùn)行、等待、終止等階段,各階段及狀態(tài)間的轉(zhuǎn)換條件具體如圖所示死亡Start睡眠掛起等待就緒運(yùn)行RUNnotifyI/O完成定時(shí)到ResumeStopWait請(qǐng)求I/OSleepSuspend創(chuàng)建阻塞一、線程的概念說(shuō)明:控制一個(gè)線程生命周期最常用的方法有start()方法(啟動(dòng)一個(gè)線程)、run()方法(定義線程動(dòng)作)、sleep()方法(使線程睡眠

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。