Java語言實(shí)用教程第10章ppt課件.ppt

Java語言實(shí)用教程第10章ppt課件.ppt

ID:59417099

大?。?63.00 KB

頁數(shù):52頁

時(shí)間:2020-09-19

Java語言實(shí)用教程第10章ppt課件.ppt_第1頁
Java語言實(shí)用教程第10章ppt課件.ppt_第2頁
Java語言實(shí)用教程第10章ppt課件.ppt_第3頁
Java語言實(shí)用教程第10章ppt課件.ppt_第4頁
Java語言實(shí)用教程第10章ppt課件.ppt_第5頁
資源描述:

《Java語言實(shí)用教程第10章ppt課件.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、第10章多線程機(jī)制10.1多線程的概念10.2創(chuàng)建線程10.3線程的優(yōu)先級(jí)10.4線程的控制10.5線程的同步機(jī)制與共享資源10.6何時(shí)使用多線程及注意問題習(xí)題程序(program)是對(duì)數(shù)據(jù)描述與操作的代碼的集合,是應(yīng)用程序執(zhí)行的腳本。進(jìn)程(process)是程序的一次執(zhí)行過程,是操作系統(tǒng)運(yùn)行程序的基本單位。程序是靜態(tài)的,進(jìn)程是動(dòng)態(tài)的。系統(tǒng)運(yùn)行一個(gè)程序就是一個(gè)進(jìn)程從創(chuàng)建、運(yùn)行到消亡的過程。系統(tǒng)可以為一個(gè)程序同時(shí)創(chuàng)建多個(gè)進(jìn)程。每一個(gè)進(jìn)程都有自己獨(dú)立的一塊內(nèi)存空間和一組系統(tǒng)資源,即使同類進(jìn)程之間也不會(huì)共享系統(tǒng)資源。10.1多線程的概念10.1.1程序、進(jìn)程和多任務(wù)多任務(wù)是指在

2、一個(gè)系統(tǒng)中可以同時(shí)運(yùn)行多個(gè)程序,即有多個(gè)獨(dú)立運(yùn)行的任務(wù),每一個(gè)任務(wù)對(duì)應(yīng)一個(gè)進(jìn)程。由于一個(gè)CPU在同一時(shí)刻只能執(zhí)行一個(gè)程序中的一條指令。實(shí)際上,多任務(wù)運(yùn)行的并發(fā)機(jī)制使這些任務(wù)交替運(yùn)行,因間隔時(shí)間短,所以感覺就是多個(gè)程序在同時(shí)運(yùn)行。運(yùn)行一個(gè)程序時(shí),程序內(nèi)部的代碼都是按順序先后執(zhí)行的。如果能夠?qū)⒁粋€(gè)進(jìn)程劃分為更小的運(yùn)行單位,則程序中一些彼此相對(duì)獨(dú)立的代碼段可以重疊運(yùn)行,將會(huì)獲得更高的執(zhí)行效率。線程就是解決這個(gè)問題的。線程是比進(jìn)程更小的運(yùn)行單位,是程序中單個(gè)順序的流控制。一個(gè)進(jìn)程中可以包含多個(gè)線程。線程是一種特殊的多任務(wù)方式。當(dāng)一個(gè)程序執(zhí)行多線程時(shí),可以運(yùn)行兩個(gè)或更多的由同一個(gè)程

3、序啟動(dòng)的任務(wù)。這樣,一個(gè)程序可以使得多個(gè)活動(dòng)任務(wù)同時(shí)發(fā)生。10.1.2線程線程與任何一個(gè)程序一樣有一個(gè)開始、一系列可執(zhí)行的命令序列、一個(gè)結(jié)束。在執(zhí)行的任何時(shí)刻,只有一個(gè)執(zhí)行點(diǎn)。線程與程序不同的是線程本身不能運(yùn)行,它只能包含在程序中,只能在程序中執(zhí)行。一個(gè)線程在程序運(yùn)行時(shí),必須爭取到為自己分配的系統(tǒng)資源,如執(zhí)行堆棧、程序計(jì)數(shù)器,等等。多線程是相對(duì)于單線程而言的,指的是在一個(gè)程序中可以定義多個(gè)線程并同時(shí)運(yùn)行它們,每個(gè)線程可以執(zhí)行不同的任務(wù)。與進(jìn)程不同的是,同類多線程共享一塊內(nèi)存空間和一組系統(tǒng)資源,所以,系統(tǒng)創(chuàng)建多線程開銷相對(duì)較小。因此,也稱線程為輕負(fù)荷進(jìn)程。多線程和多任務(wù)是兩

4、個(gè)既有聯(lián)系又有區(qū)別的概念。多任務(wù)是針對(duì)操作系統(tǒng)而言的,代表著操作系統(tǒng)可以同時(shí)執(zhí)行的程序個(gè)數(shù);多線程是針對(duì)一個(gè)程序而言的,代表著一個(gè)程序內(nèi)部可以同時(shí)執(zhí)行的線程個(gè)數(shù),而每個(gè)線程可以完成不同的任務(wù)。10.1.3多線程1.線程的生命周期與狀態(tài)一個(gè)線程也有從創(chuàng)建、運(yùn)行到消亡的過程,稱為線程的生命周期。使用線程的狀態(tài)表明線程處于生命周期的哪個(gè)階段。線程有創(chuàng)建(New)、可運(yùn)行(Runnable)、運(yùn)行中(Running)、掛起(NotRunnable)、死亡(Dead)5種狀態(tài)。通過線程的控制和調(diào)度可使線程在這幾種狀態(tài)間轉(zhuǎn)化。Java語言內(nèi)在支持多線程,所有的類都是在多線程思想下定義

5、的。Java的每個(gè)程序自動(dòng)擁有一個(gè)線程,稱為主線程。當(dāng)程序加載到內(nèi)存時(shí),啟動(dòng)主線程。要加載其他線程,程序就要使用Thread類(專門用來創(chuàng)建和控制線程的類)或Runnable接口。10.1.4線程的生命周期與Java的多線程機(jī)制2.Java的多線程機(jī)制java.lang中的線程類Thread封裝了所有需要的線程操作控制,有很多方法用來控制一個(gè)線程的運(yùn)行、休眠、掛起或停止。這就是Java的多線程機(jī)制。使用Java的多線程機(jī)制編程可將程序的任務(wù)分解為幾個(gè)并行的子任務(wù),通過線程的并發(fā)執(zhí)行來加速程序運(yùn)行,提高CPU的利用率。例10.1在程序中通過繼承Thread類創(chuàng)建一個(gè)線程子類

6、testThread,通過Thread1主類同時(shí)運(yùn)行兩個(gè)線程對(duì)象t1和t2,運(yùn)行結(jié)果如圖10.1所示。classThread1{publicstaticvoidmain(Stringargs[]){testThreadt1=newtestThread(″thread1″);testThreadt2=newtestThread(″thread2″);t1.start();t2.start();}}10.2創(chuàng)建線程10.2.1通過繼承Thread類創(chuàng)建線程classtestThreadextendsThread{publictestThread(Strin

7、gstr){super(str);//調(diào)用父類的構(gòu)造方法為線程對(duì)象命名}publicvoidrun(){for(inti=0;i<3;i++){System.out.println(getName()+″在運(yùn)行″);try{sleep(1000);//用休眠1000毫秒來區(qū)分哪個(gè)線程在運(yùn)行System.out.println(getName()+″在休眠″);}catch(InterruptedExceptione){}}System.out.println(getName()+″已結(jié)束″);}}圖1

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

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

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請(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)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。