freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

java網(wǎng)絡(luò)編程技術(shù)java基礎(chǔ)與進(jìn)階ppt-資料下載頁(yè)

2024-10-18 14:44本頁(yè)面
  

【正文】 以指定的線程名創(chuàng)建 Thread對(duì)象 public Thread(Runnable target) 以定義 Runnable接口的類(lèi)對(duì)象創(chuàng)建 Thread對(duì)象 public Thread(Runnable target,String name) 以定義 Runnable接口的類(lèi)對(duì)象和指定的線程名創(chuàng)建 Thread對(duì)象 Thread類(lèi)的常用方法 方法 功能描述 public staitc native Thread currentThread() 獲取當(dāng)前正在運(yùn)行的線程對(duì)象 public final String getName() 獲取線程名稱(chēng) public final int getPriority() 獲取線程的優(yōu)先級(jí) public final native boolean isAlive() 測(cè)試線程是否運(yùn)行結(jié)束 public void run() 線程運(yùn)行的主體,用戶(hù)必須重寫(xiě)該方法 public final void setName(String name) 設(shè)置線程名稱(chēng) public final void setPriority (int a) 設(shè)置線程的優(yōu)先級(jí) public native synchronized void start() 啟動(dòng)線程 public static native void yield() 中止線程運(yùn)行并將運(yùn)行權(quán)交出 public static native void sleep(long time) 使當(dāng)前線程睡眠 time毫秒, time毫秒繼續(xù)運(yùn)行 public final void stop() 使線程消亡狀態(tài),不再運(yùn)行 public final void suspend() 將線程掛起,進(jìn)入就緒隊(duì)列重新排隊(duì)等待調(diào)度 public final void resume() 將被掛起的線程恢復(fù)運(yùn)行狀態(tài) 創(chuàng)建線程準(zhǔn)備工作 ? 若在類(lèi)里要激活線程,須準(zhǔn)備好兩件事情: ? ( 1)此類(lèi)必須繼承 Thread類(lèi),使自己成為 Thread類(lèi)的子類(lèi)。 ? ( 2)線程要實(shí)現(xiàn)的功能代碼必須編寫(xiě)在run()方法內(nèi)。 【 例 】 利用 Thread類(lèi)的子類(lèi)實(shí)現(xiàn)多線程 //利用 Thread類(lèi)的子類(lèi)實(shí)現(xiàn)多線程 class SubThread extends Thread //定義 Thread類(lèi)的子類(lèi) { private String id。 public SubThread(String str){ // 構(gòu)造函數(shù),設(shè)置數(shù)據(jù)成員 id id=str。 } public void run(){ try{ for(int i=0。i4。i++){ (id+ 正在運(yùn)行 ...)。 sleep(500)。 //使線程休眠 500毫秒 } } catch(InterruptedException e) {(Exception:+e)。//若另一線程已中斷了該線程則拋出異常 } } } public class MyThread { public static void main(String args[]) { SubThread thread1=new SubThread(線程 1)。 SubThread thread2=new SubThread(線程 2)。 ()。//啟動(dòng)線程 1 ()。//啟動(dòng)線程 2 } } 通過(guò) Thread類(lèi)的子類(lèi)實(shí)現(xiàn)多線程的一般步驟 ? ( 1)創(chuàng)建 Thread類(lèi)的子類(lèi) SubThread,并重寫(xiě) run()方法。一般格式為: public class SubThread extends Thread { public SubThread() {//定義子類(lèi)的構(gòu)造方法,可傳遞參數(shù)。可省 } public void run() {//編寫(xiě)具體代碼,重寫(xiě)該方法 } } 通過(guò) Thread類(lèi)的子類(lèi)實(shí)現(xiàn)多線程的一般步驟 ? ( 2)在主類(lèi)的 main()方法中創(chuàng)建子類(lèi)SubThread對(duì)象。一般格式為: SubThread ThreadObject=new SubThread()。 ? ( 3)啟動(dòng)線程。一般格式為: ()。 2.實(shí)現(xiàn) Runnable 接口創(chuàng)建線程 ? Runnable接口是 Java中實(shí)現(xiàn)線程的接口。該接口只定義了一個(gè)方法 ――run() 方法。該方法是一個(gè)抽象方法,所有實(shí)現(xiàn)Runnable接口的類(lèi)都必須實(shí)現(xiàn)這個(gè)方法,為它定義具體操作。 ? Runnable接口中的 run()方法與 Thread類(lèi)中的 run()方法一樣,也是系統(tǒng)自動(dòng)識(shí)別執(zhí)行的。 ? 用該方法實(shí)現(xiàn)多線程 , 用戶(hù)需創(chuàng)建一個(gè)實(shí)現(xiàn) Runnable 接口的類(lèi) ( 簡(jiǎn)稱(chēng)為Runnable類(lèi) ) , 并在該類(lèi)中定義 run()方法實(shí)現(xiàn)線程的具體功能 , 然后用帶有Runnable參數(shù)的 Thread類(lèi)構(gòu)造方法創(chuàng)建線程 。 【例 】 利用實(shí)現(xiàn)Runnable接口實(shí)現(xiàn)多線程 class Thread_Runnable implements Runnable//定義實(shí)現(xiàn) Runnable接口的類(lèi) { private String id。 public Thread_Runnable(String str) { id=str。 } public void run(){ for(int i=0。i4。i++) (id+ 正在運(yùn)行 ...)。 } } public class ThreadRunnable { public static void main(String args[]) { //利用 Thread_Runnable類(lèi)對(duì)象創(chuàng)建線程 Thread_Runnable obj1=new Thread_Runnable(線程 1)。 Thread_Runnable obj2=new Thread_Runnable(線程 2)。 Thread thread1=new Thread(obj1)。 Thread thread2=new Thread(obj2)。 //啟動(dòng)線程 ()。 ()。 } } 通過(guò) Runnable接口實(shí)現(xiàn)多線程的一般步驟 ? ( 1)定義實(shí)現(xiàn) Runnable接口的類(lèi)Thread_Runnable。一般格式為: class Thread_Runnable implements Runnable { public void run() {//編寫(xiě)代碼 } } ? ( 2)創(chuàng)建 Runnable類(lèi) Thread_Runnable的對(duì)象。一般格式為: Thread_Runnable obj1=new Thread_Runnable(線程 1)。 ? ( 3)用帶有 Runnable參數(shù)的 Thread類(lèi)構(gòu)造方法創(chuàng)建線程對(duì)象,對(duì)象 obj1作為構(gòu)造方法的參數(shù),作為新建線程的目標(biāo)對(duì)象為線程提供 run()方法。 Thread thread1=new Thread(obj1)。 ? ( 4)啟動(dòng)線程。例如: ()。 兩種方法比較 ? 與創(chuàng)建 Thread類(lèi)的子類(lèi)實(shí)現(xiàn)多線程相比,通過(guò)實(shí)現(xiàn) Runnable接口實(shí)現(xiàn)多線程方法為線程的創(chuàng)建提供了更大的靈活性。由于 Java語(yǔ)言只支持單一繼承,子類(lèi)只能有一個(gè)父類(lèi),如果采用創(chuàng)建 Thread類(lèi)的子類(lèi)的方式,創(chuàng)建新線程類(lèi),則該類(lèi)不能再繼承其他的類(lèi),這大大限制了程序的功能。而第二種方法卻沒(méi)有這方面的顧慮。 線程同步和死鎖 ? 作為多線程程序,程序中的多個(gè)線程通常是獨(dú)立運(yùn)行的,各個(gè)線程有自己的獨(dú)占資源。但有時(shí)對(duì)于多個(gè)線程來(lái)說(shuō),某些資源是共享的,在這種情況下,就要考慮其他線程對(duì)當(dāng)前線程的影響。 ? 最重要的是要有全局觀念,要考慮到與其他共享線程的協(xié)調(diào)和配合,不考慮協(xié)調(diào)性,就可能會(huì)造成系統(tǒng)的嚴(yán)重錯(cuò)誤。 1.線程同步 ? 在 Java語(yǔ)言中,為保證多個(gè)線程對(duì)共享資源操作的一致性和完整性,引入了線程的同步機(jī)制。 ? 所謂線程同步即某個(gè)線程在一個(gè)完整操作的全執(zhí)行過(guò)程中,獨(dú)占相關(guān)資源而不被侵占。 線程同步的基本思想 ? 線程同步的基本思想是協(xié)調(diào)各線程對(duì)共享資源使用,避免多個(gè)線程以某段時(shí)間內(nèi)對(duì)同一資源的訪問(wèn),這個(gè)資源可以是數(shù)據(jù)、代碼、設(shè)備等。 ? Java通過(guò)關(guān)鍵字 synchronized來(lái)表明被同步的資源,即給資源加“鎖”,這個(gè)“鎖”我們稱(chēng)之為信號(hào)鎖。當(dāng)某個(gè)資源被 synchronized關(guān)鍵字修飾時(shí),系統(tǒng)在運(yùn)行時(shí)都會(huì)分配給它的一個(gè)信號(hào)鎖,表明該資源在同一時(shí)刻只能由一個(gè)線程訪問(wèn)。 線程同步的方法 ?處理線程同步僅僅定義信號(hào)鎖是不夠的,Java專(zhuān)門(mén)設(shè)計(jì)了以下三個(gè)方法跟信號(hào)鎖配合使用: ?( 1) public final void wait(); 等待方法。該方法是一個(gè)最終方法,不能被重載,只能在同步方法中被調(diào)用。執(zhí)行該方法會(huì)將當(dāng)前正在運(yùn)行的線程掛起,釋放所占用的資源,從運(yùn)行狀態(tài)轉(zhuǎn)入阻塞狀態(tài),進(jìn)入 wait隊(duì)列等待被喚醒。 線程同步的方法 ?( 2) public final void notify(); 喚醒方法。該方法是一個(gè)最終方法,不能被重載,只能在同步方法中被調(diào)用。執(zhí)行該方法將喚醒 wait隊(duì)列中優(yōu)先級(jí)最高的一個(gè)線程,占有資源運(yùn)行。 ?( 3)除了 notify()方法外, Java還設(shè)計(jì)了notifyAll()方法。 它的作用與 notify()方法相似,不過(guò)它是喚醒 wait隊(duì)列中的所有的線程。 2.線程死鎖 ? 死鎖是指兩個(gè)或多個(gè)線程無(wú)止境地互相等待的過(guò)程,同步不當(dāng)可能會(huì)引發(fā)線程的死鎖。下述情況可能會(huì)死鎖:若干線程各自分別占用某資源管程,又同時(shí)需要對(duì)方的資源,結(jié)果造成相互無(wú)限制地等待對(duì)方放棄資源,誰(shuí)也不能執(zhí)行下去。 解決死鎖問(wèn)題應(yīng)遵循的策略 ? ( 1)在指定的任務(wù)真正需要并行時(shí),才采用多線程進(jìn)行程序設(shè)計(jì)。 ? ( 2)在對(duì)象的同步方法中需要調(diào)用其他同步方法時(shí)必須小心。 ? ( 3)對(duì)共享資源的占用時(shí)間盡可能的短。 異常處理 ? 即使在編譯時(shí)沒(méi)有錯(cuò)誤發(fā)生 , 但程序運(yùn)行時(shí)經(jīng)常會(huì)發(fā)生一些運(yùn)行時(shí)的錯(cuò)誤 , 這種錯(cuò)誤在 Java中稱(chēng)為異常( Exception) 。 當(dāng)異常出現(xiàn)時(shí)要做出相應(yīng)的處理 , 稱(chēng)為異常處理 。 異常和異常類(lèi) ? 異常也稱(chēng)例外,是在程序運(yùn)行過(guò)程 發(fā)生的,會(huì)打斷程序正常執(zhí)行的事件,如要打開(kāi)的文件不存在、數(shù)組元素下標(biāo)越界等。 ? 在 Java中,所有的異常都是以類(lèi)的類(lèi)型存在,除了內(nèi)置的異常類(lèi)外, Java也允許自行定義異常類(lèi)。 Java異常類(lèi)分類(lèi) ? Java異常類(lèi)可分為兩大類(lèi): Exception類(lèi)和Error類(lèi)。這兩個(gè)類(lèi)都存放在 。 ? Error類(lèi)專(zhuān)門(mén)用來(lái)處理嚴(yán)重影響程序運(yùn)行的錯(cuò)誤,但程序通常不去捕捉這種錯(cuò)誤,因?yàn)榧词共蹲降剿?,也無(wú)法給予適當(dāng)?shù)奶幚怼? ? Exception類(lèi)包含了一般的異常,這些異常通常在捕捉到之后做相應(yīng)的處理,以確保程序繼續(xù)運(yùn)行。在本書(shū)中提到的異常主要是 Exception異常。 部分異常類(lèi)及其子類(lèi)的結(jié)構(gòu) Exception IOException RuntimeException …… ArithmeticException IndexOutOfBoundsException …… …… 異常類(lèi)分析 ? 在 Exception類(lèi)派生出的子類(lèi)中,IOException與 RuntimeException是較常用的兩種。 ? RuntimeException可以不編寫(xiě)異常處理的代碼,依然可以編譯成功,它在程序運(yùn)行時(shí)才可能發(fā)生。 ? IOException則一定要編寫(xiě)異常處理的代碼,否則編譯時(shí)出錯(cuò),它通常用來(lái)處理與輸入 /輸出有關(guān)的異常。 Thread類(lèi)的常用方法 方法 功能描述 public Exception() 構(gòu)造方法,創(chuàng)建 Exception對(duì)象 public Exception(String s) 構(gòu)造方法,根據(jù)指定的字符串創(chuàng)建 Exception對(duì)象 public String toString() 獲取描述 Exception對(duì)象信息的字符串 public String GetMessage() 獲取描述當(dāng)前 Exception對(duì)象的詳細(xì)信息 public void printStackTrace() 在屏幕上輸出當(dāng)前 Exception對(duì)象使用的堆棧的軌跡 異常處理 ? 在 Java程序的執(zhí)行過(guò)程中 , 若出現(xiàn)異常情況 ,就會(huì)生成一個(gè)異常對(duì)象 , 該對(duì)象可能由 Java虛擬機(jī)生成
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1