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

正文內(nèi)容

第七講多線程-在線瀏覽

2024-11-03 21:49本頁面
  

【正文】 據(jù)同步 的支持不充分。在 Java中,線程可以認為是由三部分組成的: ? 虛擬 CPU,封裝在 ,它控制著整個線程的運行; ? 執(zhí)行的代碼,傳遞給 Thread類,由 Thread類控制順序執(zhí)行; ? 處理的數(shù)據(jù),傳遞給 Thread類,是在代碼執(zhí)行過程中所要處理的數(shù)據(jù)。當生成一個 Thread類的對象之后,就產(chǎn)生了一個線程,通過該對象實例,可以啟動線程、終止線程、或者暫時掛起線程等。實現(xiàn)線程體的特定對象是在初始化線程時傳遞給線程的。 ? 通常, run( )方法是一個循環(huán),例如一個播放動畫的線程要循環(huán)顯示一系列圖片。 先來看看線程對象的初始化,類 Thread的構造方法如下: public Thread( ThreadGroup group, Runnable target, String name) ? group指明了線程所屬的線程組; ? target是線程體 run()方法所在的對象; ? name是線程的名稱。在接口 Runnable中只定義了一個方法 void run()作為線程體。 類 Thread本身也實現(xiàn)了接口 Runnable(空實現(xiàn)),因此,上述構造方法中各參數(shù)都可以為 null。 方法一: 定義一個線程類,它繼承類 Thread并重寫其中的方法run()。由于 Java只支持單繼承,用這種方法定義的類不能再繼承其他類。 } public void run() { for (int i = 0。 i++) { (i + + getName())。 } catch (InterruptedException e){ } } (DONE! + getName())。在初始化一個 Thread類或子類生成線程實例時,把目標對象傳遞給這個線程實例,由該目標對象提供線程體 run()方法。 創(chuàng)建線程的方式 public class Clock extends implements Runnable { Thread clockThread。 ()。 try{ (1000)。 (() + : + () + : + (), 5, 10)。 clockThread = null。 ? 使用 Runnable接口可以將線程的虛擬 CPU、代碼和數(shù)據(jù)分開,形成一個比較清晰的模型。 ? 直接繼承 Thread類以后不能再繼承其他類,但編寫簡單,并可直接操縱線程;使用 Runnable接口時,若要在 run()方法中操縱線程,必須使用 ()方法。通常,當一個線程體所在的類已經(jīng)繼承了另一個類時,就應該用實現(xiàn) Runnable接口的方法。在一個線程的生命周期中,它總處于某一種狀態(tài)中。 線程的生命周期及控制 new Thread() New Thread Runnable start() Not Runnable stop() stop() Dead yield() stop() run()exit . . suspend() sleep() wait() I/O流阻塞 resume() notify()/notifyAll() I/O指令 . waiting sleeping suspending blocked ready running born ready running waiting sleeping dead blocked start() dispatch quantum expiration yield() wait sleep() run plete issue I/O request wait interval expires notify() notifyAll() interrupt() I/O plete sleep interval expires interrupt() 線程的生命周期及控制 線程的生命周期及控制 ? 創(chuàng)建狀態(tài)( new Thread) 當創(chuàng)建了一個新的線程時( myThread thd = new myThread()。處于這種狀態(tài)時只能 啟動 或 終止 該線程,調用除這兩種以外的其它 線程狀態(tài)相關的方法 都會失敗并且會引起非法狀態(tài)例外 IllegalThreadStateException(對于其它狀態(tài),若所調用的方法與狀態(tài)不符,都會引起非法狀態(tài)例外)。 )來啟動它,產(chǎn)生運行這個線程所需的系統(tǒng)資源,安排其運行,并調用線程體 run()方法,這樣就使得該線程處于可運行( Runnable )狀態(tài)。由于很多計算機都是單處理器的,所以要在同一時刻運行所有的處于可運行狀態(tài)的線程是不可能的, Java運行系統(tǒng)必須實現(xiàn)調度來保證這些線程共享處理器。當一個線程正在運行時,它是可運行的,并且也是當前正運行的線程。 Thread myThread = new MyThreadClass()。 try { (10000)。 ? 如果在 I/O流中發(fā)生線程阻塞,則特定的 I/O指令將結束這種不可運行狀態(tài)。 線程的生命周期及控制 ? 死亡狀態(tài)( Dead) 線程的終止一般可通過兩種方法實現(xiàn):自然撤消或是被停止。 線程的生命周期及控制 //線程自然撤銷 public void run() { int i = 0。 (i = + i)。 ( )。 } catch (InterruptedException e){ } ( )。 如果希望線程正常終止,可采用標記來使線程中的 run()方法退出。 } } } public class Xyz implements Runnable { private boolean timeToQuit = false; public void run() { while( !timeToQuit ) {…} } public void stopRunning() { timeToQuit = true。 private Thread t = new Thread(r)。 } publi void stopThread() { ()。如果線程已被啟動并且未被終止,那么 isAlive( )返回 true,但該線程是可運行或是不可運行的,是不能作進一步的分辨。 ? join()方法: 等待線程執(zhí)行完畢。 myThread thd = new MyThread()。 … ()。 ? sleep()方法可以暫停線程的執(zhí)行,讓其它線程得到機會。 try { sleep(100) }catch(InterruptedException e){ …// 本例外可不作處理 } ? suspend()方法和 resume()可以用來暫停線程或恢復線程。但是要恢復由 suspend()方法暫停的線程,只能在其他線程中通過線程實例調用 resume()方法。線程調度器按照線程的 優(yōu)先級 決定調度哪些線程來執(zhí)行,具有高優(yōu)先級的線程會在較低優(yōu)先級的線程之前得到執(zhí)行。 多個線程運行時,若線程的優(yōu)先級相同,由操作系統(tǒng)按時間片輪轉 方式或 獨占方式 來分配線程的執(zhí)行時間。 線程被創(chuàng)建后,其缺省的優(yōu)先級是缺省優(yōu)先級 Thread. NORM_PRIORITY。 線程的優(yōu)先級及調度 線程的優(yōu)先級及調度 ? 線程離開執(zhí)行狀態(tài), 如果: ? 線程結束 ? 線程處于 I/O等待 ? 線程調用 sleep ? 線程調用 wait ? 線程調用 join ? 線程調用 yield ? 有更高優(yōu)先級的線程 ? 時間片用完 Priority 10 Priority 9 Priority 8 Priority 7 Priority 6 Priority 5 Priority 4 Priority 3 Priority 2 Priority 1 A B C D E F G H I J K 1. 用管道流實現(xiàn)線程間的通信 線程 1 PipedOutputStream PipedInputStrea
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1