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

正文內(nèi)容

第七講多線程(編輯修改稿)

2024-10-06 21:49 本頁面
 

【文章內(nèi)容簡介】 private boolean timeToQuit = false; public void run() { while( !timeToQuit ) {…} } public void stopRunning() { timeToQuit = true。 } } 線程的生命周期及控制 public class ControlThread { private Xyz r = new Xyz()。 private Thread t = new Thread(r)。 public void startThread() { ()。 } publi void stopThread() { ()。 } } 線程的生命周期及控制 ? isAlive()方法: 可以用來判斷線程目前是否正在執(zhí)行中。如果線程已被啟動并且未被終止,那么 isAlive( )返回 true,但該線程是可運行或是不可運行的,是不能作進一步的分辨。如果返回 false,則該線程是新創(chuàng)建或是已被終止的(同樣不能作進一步的分辨)。 ? join()方法: 等待線程執(zhí)行完畢。 ? yield()方法: 將執(zhí)行的權(quán)力交給其它優(yōu)先級相同的線程,當(dāng)前執(zhí)行線程到可運行線程隊列( ready)的最后等待,若隊列空,該方法無效。 myThread thd = new MyThread()。 ()。 … ()。 //等待線程 thd執(zhí)行完后再繼續(xù)往下執(zhí)行 … join(int time):最多等待 time所指定的時間。 ? sleep()方法可以暫停線程的執(zhí)行,讓其它線程得到機會。但 sleep()要丟出例外 InterruptedException ,必須抓住。 try { sleep(100) }catch(InterruptedException e){ …// 本例外可不作處理 } ? suspend()方法和 resume()可以用來暫停線程或恢復(fù)線程。可以由線程自身在線程體中調(diào)用 suspend()方法暫停自己,也可以在其他線程中通過線程實例調(diào)用 suspend()方法暫停線程的執(zhí)行。但是要恢復(fù)由 suspend()方法暫停的線程,只能在其他線程中通過線程實例調(diào)用 resume()方法。 線程的生命周期及控制 Java提供一個線程調(diào)度器來監(jiān)控程序中啟動后進入可運行狀態(tài)的所有線程。線程調(diào)度器按照線程的 優(yōu)先級 決定調(diào)度哪些線程來執(zhí)行,具有高優(yōu)先級的線程會在較低優(yōu)先級的線程之前得到執(zhí)行。同時線程的調(diào)度是 搶先式 的,即如果當(dāng)前線程在執(zhí)行過程中,一個具有更高優(yōu)先級的線程進入可執(zhí)行狀態(tài),則該告優(yōu)先級的線程會被立即調(diào)度執(zhí)行。 多個線程運行時,若線程的優(yōu)先級相同,由操作系統(tǒng)按時間片輪轉(zhuǎn) 方式或 獨占方式 來分配線程的執(zhí)行時間。 線程的優(yōu)先級及調(diào)度 在 Java中線程的優(yōu)先級是用數(shù)字來表示的,分為三個級別: ? 低優(yōu)先級: ,數(shù)值為 1 (2~4) ? 缺省優(yōu)先級: Thread. NORM_PRIORITY,數(shù)值為 5 ? 高優(yōu)先級: ,數(shù)值為 10 (6~9) 具有相同優(yōu)先級的多個線程,若它們都為高優(yōu)先級,則每個線程都是獨占式的,也就是說這些線程將被順序執(zhí)行;若該優(yōu)先級不為高優(yōu)先級,則這些線程將同時執(zhí)行,也就是說這些線程的執(zhí)行是無序的。 線程被創(chuàng)建后,其缺省的優(yōu)先級是缺省優(yōu)先級 Thread. NORM_PRIORITY??梢杂梅椒? int getPriority()來獲得線程的優(yōu)先級,同時也可以用方法 void setPriority( int p ) 在線程被創(chuàng)建后改變線程的優(yōu)先級。 線程的優(yōu)先級及調(diào)度 線程的優(yōu)先級及調(diào)度 ? 線程離開執(zhí)行狀態(tài), 如果: ? 線程結(jié)束 ? 線程處于 I/O等待 ? 線程調(diào)用 sleep ? 線程調(diào)用 wait ? 線程調(diào)用 join ? 線程調(diào)用 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 PipedInputStream 輸出流 outStream 輸入流 inStream 線程 2 2. 通過一個中間類在線程間傳遞信息 線程 2 線程 1 中間類 m s s (s) s=() write() read() 多線程的互斥與同步 —— 線程間的通信 管道流可以連接兩個線程間的通信。下面的例子里有兩個線程在運行,一個寫線程往管道流中輸出信息,一個讀線程從管道流中讀入信息。 多線程的互斥與同步 —— 線程間的通信 主類 Pipethread 輔類myWriter 線 程 類 輔類 myReader 線 程 類 管 道 流 將數(shù)據(jù)寫到輸出流 從輸入流中讀數(shù)據(jù) 輸出流作為參數(shù) 傳給 myWriter 輸入流作為參數(shù) 傳給 myReader class myWriter extends Thread { private PipedOutputStream outStream。 //將數(shù)據(jù)輸出 private String messages[] = { Monday, Tuesday , Wednsday, Thursday,Friday, Saturday, Sunday }。 public myWriter(PipedOutputStream o) { outStream = o。 } public void run() { PrintStream p = new PrintStream( outStream )。 for( int i = 0。 i 。 i++) { ( messages[i] )。 ()。 (Write: + messages[i] )。 } ()。 p = null。 } } class myReader extends Thread { private PipedInputStream inStream。 //從中讀數(shù)據(jù) public myReader(PipedInputStream i) { inStream = i。 } public void run() { String line。 DataInputStream d。 boolean reading = true。 d = new DataInputStream( inStream )。 while( reading amp。amp。 d != null) { try{ line = ()。 if( line != null ) ( ”Read: + line )。 else reading = false。 }catch( IOException e){} } try{ ().sleep( 4000 )。 }catch( InterruptedException e ){} } } public class Pipethread { public static void main(String args[])
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1