3. 不可運(yùn)行狀態(tài)(Not Runnable)
進(jìn)入不可運(yùn)行狀態(tài)的原因有如下幾條:
1) 調(diào)用了sleep()方法;
2) 調(diào)用了suspend()方法;
3) 為等候一個(gè)條件變量,線程調(diào)用wait()方法;
4) 輸入輸出流中發(fā)生線程阻塞;
不可運(yùn)行狀態(tài)也稱為阻塞狀態(tài)(Blocked)。因?yàn)槟撤N原因(輸入/輸出、等待消息或其它阻塞情況),系統(tǒng)不能執(zhí)行線程的狀態(tài)。這時(shí)即使處理器空閑,也不能執(zhí)行該線程。
4. 死亡狀態(tài)(Dead)
線程的終止一般可通過(guò)兩種方法實(shí)現(xiàn):自然撤消(線程執(zhí)行完)或是被停止(調(diào)用stop()方法)。目前不推薦通過(guò)調(diào)用stop()來(lái)終止線程的執(zhí)行,而是讓線程執(zhí)行完。 來(lái)源:www.examda.com
6. 1. 2 線程體(2)
線程體的構(gòu)造
任何實(shí)現(xiàn)接口Runnable的對(duì)象都可以作為一個(gè)線程的目標(biāo)對(duì)象,上面已講過(guò)構(gòu)造線程體有兩種方法,下面通過(guò)實(shí)例來(lái)說(shuō)明如何構(gòu)造線程體的。
例6.1 通過(guò)繼承類Thread構(gòu)造線程體
class SimpleThread extends Thread {
public SimpleThread(String str) {
super(str); //調(diào)用其父類的構(gòu)造方法
}
public void run() { //重寫(xiě)run方法
for (int i = 0; i < 10; i++) {
System.out.println(i + " " + getName());
//打印次數(shù)和線程的名字
try {
sleep((int)(Math.random() * 1000));
//線程睡眠,把控制權(quán)交出去
} catch (InterruptedException e) {}
}
System.out.println("DONE! " + getName());
//線程執(zhí)行結(jié)束
}
}
進(jìn)入不可運(yùn)行狀態(tài)的原因有如下幾條:
1) 調(diào)用了sleep()方法;
2) 調(diào)用了suspend()方法;
3) 為等候一個(gè)條件變量,線程調(diào)用wait()方法;
4) 輸入輸出流中發(fā)生線程阻塞;
不可運(yùn)行狀態(tài)也稱為阻塞狀態(tài)(Blocked)。因?yàn)槟撤N原因(輸入/輸出、等待消息或其它阻塞情況),系統(tǒng)不能執(zhí)行線程的狀態(tài)。這時(shí)即使處理器空閑,也不能執(zhí)行該線程。
4. 死亡狀態(tài)(Dead)
線程的終止一般可通過(guò)兩種方法實(shí)現(xiàn):自然撤消(線程執(zhí)行完)或是被停止(調(diào)用stop()方法)。目前不推薦通過(guò)調(diào)用stop()來(lái)終止線程的執(zhí)行,而是讓線程執(zhí)行完。 來(lái)源:www.examda.com
6. 1. 2 線程體(2)
線程體的構(gòu)造
任何實(shí)現(xiàn)接口Runnable的對(duì)象都可以作為一個(gè)線程的目標(biāo)對(duì)象,上面已講過(guò)構(gòu)造線程體有兩種方法,下面通過(guò)實(shí)例來(lái)說(shuō)明如何構(gòu)造線程體的。
例6.1 通過(guò)繼承類Thread構(gòu)造線程體
class SimpleThread extends Thread {
public SimpleThread(String str) {
super(str); //調(diào)用其父類的構(gòu)造方法
}
public void run() { //重寫(xiě)run方法
for (int i = 0; i < 10; i++) {
System.out.println(i + " " + getName());
//打印次數(shù)和線程的名字
try {
sleep((int)(Math.random() * 1000));
//線程睡眠,把控制權(quán)交出去
} catch (InterruptedException e) {}
}
System.out.println("DONE! " + getName());
//線程執(zhí)行結(jié)束
}
}

