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

正文內(nèi)容

java2面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ)線程ppt-在線瀏覽

2024-12-06 04:51本頁面
  

【正文】 ? 要使用多線程實現(xiàn)程序的流程控制,需要首先創(chuàng)建線程,生成線程實例,然后需要控制線程的調(diào)度。線程體決定線程的功能,它由run()方法實現(xiàn),系統(tǒng)通過調(diào)用線程的 run()方法實現(xiàn)線程的具體功能。 繼承 Thread類 ? 可通過創(chuàng)建 Thread類的子類并重寫其中的 run()方法來定義線程體以實現(xiàn)線程的具體功能,然后創(chuàng)建該子類的對象以創(chuàng)建線程。如表 61和表 62所示。 Runnable接口只定義了一個方法 —— run()方法,該方法是一個抽象方法,所有實現(xiàn) Runnable接口的類都必須具體實現(xiàn)這個方法,為它提供方法體并定義具體操作。 實現(xiàn) Runnable接口 ? 通過實現(xiàn) Runnable接口實現(xiàn)多線程的一般步驟如下。它的一般格式為: ? class ClassName implements Runnable ? { ? public void run() ? { ? //編寫代碼 ? } ? } ? (2) 創(chuàng)建 Runnable類 ClassName的對象。 ? (3) 用帶有 Runnable參數(shù)的 Thread類構(gòu)造方法創(chuàng)建線程對象,對象 RunnableObject作為構(gòu)造方法的參數(shù),作為新建線程的目標對象為線程提供 run()方法。 實現(xiàn) Runnable接口 ? Thread 類中除了上述構(gòu)造方法帶有 Runnable 參數(shù)外,還有下面 3個構(gòu)造方法也帶有 Runnable參數(shù)。第 2個和第 3個方法的第一個參數(shù)是指明新創(chuàng)建的線程屬于哪一個線程組。start方法使該對象成為一個準備運行的新線程。線程可以處于以下 5種狀態(tài)的任何一種狀態(tài):新建、就緒、運行、阻塞和消亡狀態(tài)。 線程的控制 ? 表 63 線程的控制方法 線程的控制 ? 通過這些方法,線程的各個狀態(tài)可以相互轉(zhuǎn)換。 ? 下面詳細講解這些方法的用法。 start()方法使 Thread對象表示的虛擬 CPU開始執(zhí)行,也就是切換到就緒狀態(tài),在這之后,新線程開始執(zhí)行可運行的run()方法。 線程的控制 ? 1: start(); 2: stop(); 3: suspend(); 4: sleep(); 5:resume(); 6: yield(); 7: interrupt(); 8:等待處理資源 ? 圖 63 線程的生命周期 線程的控制 ? (2) stop()停止線程 ? stop()方法使線程停止,它激發(fā)死亡狀態(tài)并且給出錯誤。 ? (3) suspend()暫停線程 ? suspend()方法也只是 Thread類的方法,調(diào)用這個方法可以使線程處于封鎖狀態(tài),直至我們調(diào)用 resume()方法來喚醒它,suspend()方法可以被自己和別的線程調(diào)用,通常是被別的線程調(diào)用,比如被鼠標單擊事件處理程序調(diào)用。 線程的控制 ? (4) sleep()暫停線程 ? sleep()方法使控制流程暫停,在給定的 — 段時間內(nèi)睡眠,所以特別適合需要在一定時間間隔內(nèi)完成一個動作的線程。 //睡眠 millis毫秒 ? public static void sleep (long millis,int nanos)throws InterruptException。 ? (6) yield()使線程由運行狀態(tài)轉(zhuǎn)為就緒狀態(tài) ? 如果要編寫多個合作線程,則可能浪費 CPU時間。 ? 另外,還有 join()方法,調(diào)用 join()方法后線程暫停工作,并一直等待直到線程停止。 ? class ThreadBody implements Runnable ? { ? int i。 ? (().getName())。 ? Thread th=new Thread(tb)。 ? } ? catch(InterruptedException e) ? { ? ()。 ? Thread newThr=new Thread(body)。 ? } ? } ? 運行結(jié)果如圖 64所示。 啟動線程 ? 圖 64 運行結(jié)果 (例 ) 線程休眠 ? 【 例 】 使用 sleep方法使線程休眠,程序如下。 ? public EvenOdd(int first,int interval) ? { ? f=first。 ? } ? public void run() ? { ? try ? { ? for(int i=f。i+=2) ? { ? (().getName()+ +i)。 ? } 線程休眠 ? } ? catch(InterruptedException e) ? { ? ()。 ? EvenOdd th2=new EvenOdd(0,30)。 ? ()。 ? ()。 ? } ? } 線程休眠 ? 運行結(jié)果如圖 65所示。線程中斷后是等待新的任務(wù)還是繼續(xù)進行下一步操作將取決于應(yīng)用程序。 ? (1) 不要使用 ? 盡管它的確可以中止一個正在運行的線程,由于它的安全問題而遭到了開發(fā)人員普遍的反對。 ? (2) 不建議使用 ? ()方法不會中斷一個正在運行的線程。 中斷線程 ? 【 例 】 通過 ()中斷線程舉例,程序如下。 ? ( Starting thread... )。 ? ( 3000 )。 ? ()。 ? ( Stopping application... )。 ? } ? public void run() ? { ? while ( true ) 中斷線程 ? { ? ( Thread is running... )。 //當前系統(tǒng)毫秒級單位的時間,返回長整型的數(shù) ? while ( ()time 1000 ) ? { ? } ? } ? } ? } ? 運行結(jié)果如圖 67所示。 中斷線程 ? 圖 67 運行結(jié)果 (例 ) Java的多線程實例 ? Java語言中,線程有如下特點。而其他線程執(zhí)行的位置,程序員是可以自定義的。 ? (3) 一個線程執(zhí)行其代碼是與其他線程獨立開來的。 ? (4) 前面已經(jīng)說過,線程是共享地址空間的,如果控制不當,這里很有可能出現(xiàn)死鎖。 Java的多線程實例 ? 【 例 】 繼承 Thread類舉例,通過它講述多線程的作用機制。 ? class MultiThread ? { ? public static void main(String[] args) ? { ? MyThread mt=new MyThread()。 ? new Thread(mt).
點擊復制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1