Java程序設(shè)計實訓(xùn)教程課件11多線程異常_第1頁
Java程序設(shè)計實訓(xùn)教程課件11多線程異常_第2頁
Java程序設(shè)計實訓(xùn)教程課件11多線程異常_第3頁
Java程序設(shè)計實訓(xùn)教程課件11多線程異常_第4頁
Java程序設(shè)計實訓(xùn)教程課件11多線程異常_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

本章內(nèi)容異常處理多線程異常處理異常(Exception)

程序執(zhí)行過程中發(fā)生的中斷了正常指令流的事件

Throwable類Error類Exception類RuntimeExceptionIOExceptionAWTException……聲明和拋出異常聲明異常voidtest()

throws

異常1,異常2{}拋出異常

if(條件1)

thrownew異常1();

if(條件2)

thrownew異常2();例:publicvoidtest()throwsIOException{if(打開文件錯誤)

thrownewIOException(“文件打不開”);}捕獲異常try{

有異常拋出的函數(shù)調(diào)用;}catch(捕獲的異常類1變量){

異常處理}catch(捕獲的異常類2變量){

異常處理}finally{

無論有無異常拋出,都執(zhí)行這里的語句;

主要用于資源釋放;}自定義異常classmyexception

extendsException{

Stringmsg;

publicmyexception(Strings){msg=s;}publicStringgetMessage(){returnmsg;}}覆寫父類方法publicclassexception{publicvoidtest(Strings)throwsmyexception{if(s.equalsIgnoreCase("test"))

thrownewmyexception("測試");}

publicstaticvoidmain(String[]args){exceptionex=newexception();

try{ex.test("test");

}catch(myexceptione){

System.out.println(e.toString());}finally{}}}聲明函數(shù)異常拋出函數(shù)異常捕獲函數(shù)異常捕獲所有異常從第一個catch語句開始比對,直到遇到與拋出異常類型一致,或是所拋出異常類的父類,便交由此catch語句處理

try{

ex.test("test");

}catch(myexceptione){

System.out.println(e.toString());

}catch(Exceptione){

System.out.println(e.toString());

}finally{}放在最后多線程程序:是一段靜態(tài)的代碼進(jìn)程:程序的動態(tài)執(zhí)行過程線程(Thread):

“進(jìn)程”中單一順序的控制流,處理器將其與其他線程同時運行多線程(multithreading):

計算機(jī)同時運行多個執(zhí)行線程的能力進(jìn)程主線程……線程2線程1程序加載單線程時間用戶程序服務(wù)器1服務(wù)器2請求1請求2結(jié)果1結(jié)果2多線程時間用戶程序服務(wù)器1服務(wù)器2請求1請求2結(jié)果1結(jié)果2實現(xiàn)線程方法繼承Thread類

實現(xiàn)了Runnable接口,直接定義Thread的子類比較方便,只要覆寫run方法,在這個方法里定義所要執(zhí)行的具體操作;實現(xiàn)Runnable接口

Runnable接口只定義了run接口方法,在類定義時實現(xiàn)run方法即可。Thread類創(chuàng)建對象Thread();//創(chuàng)建一個系統(tǒng)線程對象Thread(Runnabletarget);

//參數(shù)對象target中實現(xiàn)run方法來初始化Thread(Stringthreadname);//為新創(chuàng)建的線程對象制定名稱線程優(yōu)先級(1-10)

MIN_PRIORITY,代表最小優(yōu)先級,通常為1;

NORM_PRIORITY,代表普通優(yōu)先級,缺省為5;

MAX_PRIORITY,代表最高優(yōu)先級,通常為10。主要方法start():啟動線程,使之從新建狀態(tài)進(jìn)入就緒排隊狀態(tài)。run()

:定義線程操作,用戶程序需要定義run方法。sleep(intmillsecond):使線程暫時休眠。setPriority(intnewPrioriry):設(shè)置線程優(yōu)先級publicclassExample_thread{publicstaticvoidmain(Stringargs[]){ Lefthandleft=newLefthand(); Righthandright=newRighthand(); left.start(); right.start(); //right.setPriority(10); for(inti=1;i<=6;i++) System.out.println(i+"我是主線程");}}classLefthandextendsThread{ publicvoidrun(){ for(inti=1;i<=9;i++) System.out.println(i+"我是左手線程");}}classRighthandextendsThread{ publicvoidrun(){ for(inti=1;i<=9;i++) System.out.println(i+"我是右手線程");}}步驟:①覆寫run方法;②創(chuàng)建用戶線程實例;③調(diào)用start方法啟動線程。publicclassMythread1extendsThread{publicstaticints_count=0;privateStringm_name;Mythread1(Strings){m_name=s;}publicstaticintgetCount(){returns_count++;}

publicvoidrun(){while(s_count<100){System.out.println(m_name+":"+getCount());}}publicstaticvoidmain(String[]args){

newMythread1("first").start();newMythread1("second").start();newMythread1("third").start();}}123Runnable接口步驟:①實現(xiàn)run方法;②將該類對象作為參數(shù)創(chuàng)建類Thread的對象;③調(diào)用start方法啟動線程。publicclassMythread2

implementsRunnable{

publicstaticints_count=0;publicstaticintgetCount(){returns_count++;}

publicvoidrun(){while(s_count<100){System.out.println(Thread.currentThread().getName()+":"+getCount());}}

publicstaticvoidmain(String[]args){

newThread(newMythread2(),"first").start();

newThread(newMythread2(),"second").start();}}123線程生命周期新建就緒運行阻塞死亡新建:已創(chuàng)建,并被初始化,但尚未啟動;就緒:新建線程被啟動,進(jìn)入線程隊列排隊等待CPU時間片;運行:線程被調(diào)度并獲得CPU資源時,進(jìn)入運行狀態(tài),執(zhí)行run方法;阻塞:執(zhí)行的線程在特殊情況下,進(jìn)入阻塞狀態(tài),釋放CPU資源,直到引起阻塞的原因消除,而后轉(zhuǎn)入就緒狀態(tài),重新進(jìn)到線程隊列中排隊;死亡:線程全部執(zhí)行完畢或強(qiáng)制終止。阻塞狀態(tài)①sleep函數(shù)使線程進(jìn)入休眠,直到休眠時間結(jié)束轉(zhuǎn)為就緒;②suspend暫停線程,直到收到resume消息方可轉(zhuǎn)為就緒。③wait暫停線程,直到收到notify或notifyAll消息轉(zhuǎn)為就緒;④等待某個I/O動作完成;sleep方法classglobal

extendsThread{

publicvoid

run(

){

try{

Thread.sleep(1000);

}catch(Exceptione){

}

System.out.println("run");

}

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論