版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
主題:線程的生命周期
-Java核心技術(shù)-什么是線程的生命周期?線程的生命周期是指一個線程從產(chǎn)生到消亡的發(fā)展過程。在這個過程中,每一個時刻都是線程生命周期的一個階段。我們把線程生命周期的不同階段稱作線程的不同狀態(tài)。線程的五種狀態(tài)創(chuàng)建(new)可運(yùn)行(runnable)或就緒狀態(tài)運(yùn)行中(running)不可運(yùn)行(notrunnable)或阻塞(blocked)狀態(tài)
死亡(dead)線程的生命周期狀態(tài)圖創(chuàng)建狀態(tài)(new)線程已創(chuàng)建但并未啟動publicstaticvoidmain(String[]args){
MyThreadta=newMyThread();
}可運(yùn)行狀態(tài)(Runnable)線程已具備除CPU運(yùn)行時間以外的其它各種所需資源,但尚未運(yùn)行,或者稱為就緒態(tài)。
publicstaticvoidmain(String[]args){
MyThreadta=newMyThread();
ta.start();
}運(yùn)行狀態(tài)(Running)線程已是真正擁有CPU使用權(quán)的線程,執(zhí)行線程對象的run()方法publicstaticvoidmain(String[]args){
MyThreadta=newMyThread();
ta.start();
Thread.sleep();
}不可運(yùn)行狀態(tài)(notRunnable)因為某種原因使得線程處于無法運(yùn)行的狀態(tài)。處于阻塞狀態(tài)的線程即使擁有CPU使用時間也無法運(yùn)行。死亡狀態(tài)(Dead)線程結(jié)束其生命周期,進(jìn)入無法再次運(yùn)行的狀態(tài)線程狀態(tài)的枚舉值Thread.State類中的各狀態(tài)值狀態(tài)值含義NEW處于創(chuàng)建狀態(tài)的線程RUNNABLE處于可運(yùn)行狀態(tài)的線程BLCOKED處于不可運(yùn)行狀態(tài)(阻塞狀態(tài))的線程WAITTING被其他線程用wait方法阻塞的線程,或使用join方法后進(jìn)入的狀態(tài)TIMED_WAITTING計時等待TERMINATED處于死亡狀態(tài)的線程輸出線程的三種典型狀態(tài)publicstaticvoidmain(String[]args){try{ MyThreadta=newMyThread();//創(chuàng)建一個新線程
System.out.println("MainThreadPrint:"+ta.getState()); ta.start();//啟動新線程
System.out.println("MainThreadPrint:"+ta.getState()); ta.join();//等待新創(chuàng)建的新線程死亡
System.out.println("MainThreadPrint:"+ta.getState());}catch(Exceptione){ e.printStackTrace();//打印出錯信息
}}線程的調(diào)度的方法Thread類中的方法startrunyieldsleepjoinisAlivesuspendresumestopObject類中的方法waitnotifynotifyAll線程的調(diào)度publicstaticvoidmain(String[]args){
try{ MyThreadmt=newMyThread();//創(chuàng)建一個新線程對象
mt.start();//啟動新線程
while(true){ System.out.println("MainThreadisRunning"); Thread.sleep(250);//休眠0.25秒
}}catch(InterruptedExceptionie){ ie.printStackTrace();//打印出錯信息
}}小結(jié)什么是線程的生命周期?線程的生命周期有哪幾種狀態(tài)?請列舉引起線程狀態(tài)轉(zhuǎn)換的幾個常用方法?作業(yè)創(chuàng)建一個具有2個線程的多線程程序,使用線程調(diào)度函數(shù),使2個兩個線程交替輸出5次各自的線程名。其輸出結(jié)果應(yīng)如圖所示。主題:線程的優(yōu)先級
-Java核心技術(shù)-優(yōu)先級優(yōu)先級在多線程系統(tǒng)中,每個線程都被賦予一個執(zhí)行優(yōu)先級。優(yōu)先級決定了線程被CPU執(zhí)行的優(yōu)先次序。如果線程的優(yōu)先級完全相等,就按照“先到先服務(wù)”的原則進(jìn)行調(diào)度。Java語言中優(yōu)先級的范圍在Thread.MIN_PRIORITY(1)-Thread.MAX_PRIORITY(10)之間。默認(rèn)的優(yōu)先級為Thread.NORM_PRIORITY(5).新建線程的優(yōu)先級(1)繼承創(chuàng)建它的父線程的優(yōu)先級。(2)通過調(diào)用Thread類的setPriority(inta)方法來設(shè)置線程的優(yōu)先級。getPriority()能返回線程當(dāng)前的優(yōu)先級級別。線程的優(yōu)先級控制線程運(yùn)行publicstaticvoidmain(String[]args){
MyThreadmta=newMyThread("ThreadA");//創(chuàng)建線程Amta.setPriority(Thread.MIN_PRIORITY);mta.start();
MyThreadmtb=newMyThread("ThreadB");//創(chuàng)建線程Bmtb.setPriority(Thread.NORM_PRIORITY);mtb.start();
MyThreadmtc=newMyThread("ThreadC");//創(chuàng)建線程Cmtc.setPriority(Thread.MAX_PRIORITY);mtc.start();
}線程的優(yōu)先級控制線程運(yùn)行classMyThreadextendsThread{ privateStringname;//線程名
publicMyThread(Stringname){ =name; }publicvoidrun(){for(inti=0;i<3;i++){System.out.println(+"優(yōu)先級是"+this.getPriority());try{ this.sleep(100);//設(shè)定休眠時間
}catch(InterruptedExceptionie){ ie.printStackTrace(); }}}}小結(jié)線程優(yōu)先級的主要用途是什么?Java中線程的優(yōu)先級有幾級?如何設(shè)置和獲取線程的優(yōu)先級?主題:線程組
-Java核心技術(shù)-什么是線程組?線程組:提供了一個統(tǒng)一管理多個線程而不需單獨管理的機(jī)制。當(dāng)多個線程分為一組時,可以用一個方法啟動或掛起線程組中的所有線程
java.lang.ThreadGroup類來支持線程組的實現(xiàn)線程組的組成ThreadGroup類的構(gòu)造方法構(gòu)造方法publicThreadGroup(Stringname)publicThreadGroup(ThreadGroupparent,Stringname)父線程組的名稱線程組名稱ThreadGroup類的常用方法publicStringgetName()
//返回當(dāng)前線程組名publicintactiveCount()
//獲得本組活動線程的數(shù)目publicThreadGroupgetParent()
//得到當(dāng)前線程組的父線程組publicvoidinterrupt()
//中斷線程組中所有線程及其子線程組中所有線程publicintenumerate(Thread[]list) //將本組活動線程拷貝到數(shù)組list中線程組控制publicstaticvoidlistCurrentThreads(){ThreadGroupcurGroup=Thread.currentThread().getThreadGroup();intnumThreads=curGroup.activeCount();System.out.println("當(dāng)前線程組共有線程:"+numThreads);Thread[]listOfThreads=newThread[numThreads];curGroup.enumerate(listOfThreads);//輸出每個線程的名字
for(inti=0;i<numThreads;i++){ System.out.println(“第”+i+“個線程:"+listOfThreads[i].getName()); }}小結(jié)什么是線程組?線程組有什么作用?如何實現(xiàn)建立和訪問線程組?主題:守護(hù)線程-Java核心技術(shù)-守護(hù)線程守護(hù)線程(DaemonThreads)也稱后臺線程,是指在程序運(yùn)行的時候在后臺提供一種通用服務(wù)的線程。這種線程并不屬于程序中不可或缺的部分,也就是說守護(hù)線程不會阻止程序的終止。當(dāng)所有的非后臺線程結(jié)束時,守護(hù)線程也就終止了。Thread類的守護(hù)線程的方法publicfinalbooleanisDaemon()
//判斷一個線程是否是守護(hù)線程publicfinalvoidsetDaemon(boolean
on)
//將一個線程設(shè)為守護(hù)線程必須在start()方法之前設(shè)置
線程組控制classMyThreadextendsThread{ publicMyThread(){
this.setDaemon(true);//將線程設(shè)為守護(hù)線程
this.start();//啟動線程
}……}小結(jié)什么是守護(hù)線程?如何設(shè)置線程為守護(hù)線程?作業(yè)判斷下面說明是否正確?為什么?①如果線程處于死亡狀態(tài),則它不是Runnable線程②在Java中,較高優(yōu)先級的Runnable線程應(yīng)搶在較低優(yōu)先級線程的前面執(zhí)行③在線程休眠時,sleep方法不會占用處理器時間④yield方法將導(dǎo)致線程進(jìn)入不可運(yùn)行狀態(tài)⑤一個線程不通過start方法也可以進(jìn)入可運(yùn)行狀態(tài)⑥守護(hù)線程會阻止程序的終止主題:守護(hù)線程-Java核心技術(shù)-守護(hù)線程守護(hù)線程(DaemonThreads)也稱后臺線程,是指在程序運(yùn)行的時候在后臺提供一種通用服務(wù)的線程。這種線程并不屬于程序中不可或缺的部分,也就是說守護(hù)線程不會阻止程序的終止。當(dāng)所有的非后臺線程結(jié)束時,守護(hù)線程也就終止了。Thread類的守護(hù)線程的方法publicfinalbooleanisDaemon()
//判斷一個線程是否是守護(hù)線程publicfinalvoidsetDaemon(boolean
on)
//將一個線程設(shè)為守護(hù)線程必須在start()方法之前設(shè)置
線程組控制classMyThreadextendsThread{ publicMyThread(){
this.setDaemon(true);
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026中國科協(xié)所屬單位招聘應(yīng)屆高校畢業(yè)生33人考試備考題庫及答案解析
- 2025天津津彩投資公司面向社會選聘1人(第25期)筆試考試備考題庫及答案解析
- 2025年山西省長治市人民醫(yī)院公開招聘碩士以上專業(yè)技術(shù)工作人員參考筆試題庫附答案解析
- 2025廣東省城市技師學(xué)院招聘工作人員1人考試筆試模擬試題及答案解析
- 深度解析(2026)GBT 26104-2010WGJ 型接中間軸鼓形齒式聯(lián)軸器
- 2025廣西百色平果市發(fā)展和改革局城鎮(zhèn)公益性崗位人員招聘1人備考筆試題庫及答案解析
- 2025福建三明經(jīng)濟(jì)開發(fā)區(qū)管理委員會直屬事業(yè)單位公開招聘專業(yè)技術(shù)人員2人模擬筆試試題及答案解析
- 2025山東青島海建投資有限公司附全資子公司招聘25人參考筆試題庫附答案解析
- 深度解析(2026)《GBT 25798-2010紡織染整助劑分類》(2026年)深度解析
- 深度解析(2026)《GBT 25736-2010棉花加工企業(yè)生產(chǎn)環(huán)境及安全管理要求》(2026年)深度解析
- 2023-2024學(xué)年四川省成都市高二上學(xué)期期末調(diào)研考試地理試題(解析版)
- 陜西單招數(shù)學(xué)試題及答案
- 應(yīng)收賬款債權(quán)轉(zhuǎn)讓協(xié)議
- 四川省宜賓市長寧縣2024-2025學(xué)年九年級上學(xué)期期末化學(xué)試題(含答案)
- CNAS-CC01:2015 管理體系認(rèn)證機(jī)構(gòu)要求
- 可行性報告商業(yè)計劃書
- 甲流防控知識培訓(xùn)課件
- DB32 T538-2002 江蘇省住宅物業(yè)管理服務(wù)標(biāo)準(zhǔn)
- 借住合同范本(2篇)
- 2025年民航華北空管局招聘筆試參考題庫含答案解析
- 公司反腐敗反賄賂培訓(xùn)
評論
0/150
提交評論