Core java經(jīng)典教程十一.doc

Core java經(jīng)典教程十一.doc

ID:52804197

大小:48.50 KB

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

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

Core java經(jīng)典教程十一.doc_第1頁(yè)
Core java經(jīng)典教程十一.doc_第2頁(yè)
Core java經(jīng)典教程十一.doc_第3頁(yè)
Core java經(jīng)典教程十一.doc_第4頁(yè)
Core java經(jīng)典教程十一.doc_第5頁(yè)
資源描述:

《Core java經(jīng)典教程十一.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、Java多線程編程進(jìn)程,即運(yùn)行中的程序,多任務(wù)操作系統(tǒng)中并發(fā)的一個(gè)任務(wù)(CPU是分時(shí)間片執(zhí)行多個(gè)進(jìn)程的),線程,其本質(zhì)是進(jìn)程中順序的執(zhí)行流程,進(jìn)程有獨(dú)立的進(jìn)程空間進(jìn)程中的數(shù)據(jù)存放空間(對(duì)空間和??臻g)是獨(dú)立的。線程沒有獨(dú)立的存放數(shù)據(jù)的空間,數(shù)據(jù)存儲(chǔ)空間(堆空間)是共享的,線程間的??臻g是獨(dú)立的,線程消耗的資源比進(jìn)程小。線程,是進(jìn)程(運(yùn)行中的程序)中順序的執(zhí)行流程,進(jìn)程可以劃分出多個(gè)線程。JVM(java虛擬機(jī))本身就是一個(gè)進(jìn)程,java只能夠申請(qǐng)創(chuàng)建線程。操作系統(tǒng)決定線程是否有優(yōu)先級(jí),獨(dú)占式的操作系統(tǒng)中

2、系統(tǒng)會(huì)有優(yōu)先級(jí)的概念,共享式的操作系統(tǒng)則不會(huì)優(yōu)先級(jí)的。Java中的線程也是對(duì)象,線程類是Thread類,線程是操作系統(tǒng)創(chuàng)建并進(jìn)行維護(hù)的資源,線程對(duì)象表示一個(gè)線程,本身不是線程。通過線程對(duì)象來(lái)申請(qǐng)創(chuàng)建,中止線程,訪問底層的線程資源。線程包含了三部分,cpu資源,代碼,數(shù)據(jù)存儲(chǔ)空間。線程對(duì)象調(diào)用start()方法,線程對(duì)象就會(huì)向操作系統(tǒng)申請(qǐng)線程啟動(dòng),除了申請(qǐng)的線程,還有main方法的線程,也就是主線程。注意:只有運(yùn)行狀態(tài)的線程才有機(jī)會(huì)執(zhí)行代碼,主線程的中止不會(huì)影響其他的正在運(yùn)行中的線程,朱線程中止也就是ma

3、in()方法退出了。只有進(jìn)程中的所有線程都中止時(shí),進(jìn)程(JVM進(jìn)程)才會(huì)退出,只要有線程沒有中止,進(jìn)程就不會(huì)退出。線程編程的兩種方法1,寫一個(gè)類,繼承Thread類,覆蓋Thread類中繼承來(lái)的run()方法,這樣就寫好了自定義的線程類。例:publicclassTest{publicstaticvoidmain(String[]args){Threadt=newA();t.start();}classAextendsThread{publicvoidrun(){...}}2,寫一個(gè)類,實(shí)現(xiàn)Runabl

4、e接口,實(shí)現(xiàn)其中的run()方法。這種方法寫好的類的對(duì)象需要作為線程類創(chuàng)建對(duì)象時(shí)構(gòu)造方法的參數(shù)。例:publicclassTest{publicstaticvoidmain(String[]args){Runabler=newb();//目標(biāo)對(duì)象Threadt=newThread(r);//用目標(biāo)對(duì)象構(gòu)造線程對(duì)象t.start();}classbimplementsRunable{publicvoidrun(){...}}Thread類的方法publicstaticvoidsleep(longmilli

5、s)throwsInterruptedException括號(hào)中以毫秒為單位,使線程停止一段時(shí)間,間隔期滿后,線程不一定立即恢復(fù)執(zhí)行。當(dāng)main()運(yùn)行完畢,即使在結(jié)束時(shí)時(shí)間片還沒有用完,CPU也放棄此時(shí)間片,繼續(xù)運(yùn)行其他程序。try{Thread.sleep(1000);}catch(InterruptedExceptione){e.printStackTrace(e);}publicfinalvoidjoin()throwsInterruptedException表示其他運(yùn)行線程放棄執(zhí)行權(quán),進(jìn)入阻塞狀

6、態(tài),直到調(diào)用線程結(jié)束。實(shí)際上是把并發(fā)的線程變?yōu)榇羞\(yùn)行。線程的優(yōu)先級(jí):1-10,越大優(yōu)先級(jí)越高,優(yōu)先級(jí)越高被OS選中的可能性就越大。(不建議使用,因?yàn)椴煌僮飨到y(tǒng)的優(yōu)先級(jí)并不相同,使得程序不具備跨平臺(tái)性,這種優(yōu)先級(jí)只是粗略地劃分)。注:程序的跨平臺(tái)性:除了能夠運(yùn)行,還必須保證運(yùn)行的結(jié)果。Publicstaticvoidfield()使當(dāng)前線程馬上交出執(zhí)行權(quán),回到可運(yùn)行狀態(tài),等待OS的再次調(diào)用。PublicfinalBooleanisActive()驗(yàn)證當(dāng)前線程是否是活動(dòng)的,不管它是否正在運(yùn)行。線程的生命

7、周期下面為線程中的7中非常重要的狀態(tài):(有的書上也只有認(rèn)為前五種狀態(tài):而將“鎖池”和“等待池”都看成是“阻塞”狀態(tài)的特殊情況:這種認(rèn)識(shí)也是正確的,但是將“鎖池”和“等待池”單獨(dú)分離出來(lái)有利于對(duì)程序的理解)初始可運(yùn)行阻塞運(yùn)行結(jié)束鎖池等待隊(duì)列①⑴②⑵③⑶run()方法運(yùn)行結(jié)束start()OS分配CPUCPU時(shí)間片結(jié)束或調(diào)用yield()o.wait()等待鎖標(biāo)記o.notify()1,初始狀態(tài),線程創(chuàng)建,線程對(duì)象調(diào)用start()方法。2,可運(yùn)行狀態(tài),也就是等待Cpu資源,等待運(yùn)行的狀態(tài)。3,運(yùn)行狀態(tài),獲

8、得了Cpu資源,正在運(yùn)行狀態(tài)。4,阻塞狀態(tài),也就是讓出Cpu資源,進(jìn)入一種等待狀態(tài),而且不是可運(yùn)行狀態(tài),有三種情況會(huì)進(jìn)入阻塞狀態(tài)。1)如等待輸入(輸入設(shè)備進(jìn)行處理,而CPU不處理),則放入阻塞,直到輸入完畢,阻塞結(jié)束后會(huì)進(jìn)入可運(yùn)行狀態(tài)。2)線程休眠,線程對(duì)象調(diào)用sleep()方法,阻塞結(jié)束后會(huì)進(jìn)入可運(yùn)行狀態(tài)。3)線程對(duì)象2調(diào)用線程對(duì)象1的join()方法,那么線程對(duì)象2進(jìn)入阻塞狀態(tài),直到線程對(duì)象1中止。5,中止?fàn)顟B(tài),線程執(zhí)行結(jié)束。所有線程都

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

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

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問題,請(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)系客服處理。