貼上執行結果:
Making 1
Making 2
Thread 1(5)
Thread 1(4)
Thread 1(3)
Thread 2(4)
Making 4
Thread 3(5)
Thread 3(4)
Thread 3(3)
Thread 1(2)
Thread 1(1)
Thread 4(5)
Thread 3(2)
Making 5
Thread 2(3)
Thread 2(2)
All Threads Started
Thread 5(5)
Thread 3(1)
Thread 4(4)
Thread 5(4)
Thread 2(1)
Thread 5(3)
Thread 4(3)
Thread 5(2)
Thread 4(2)
Thread 5(1)
Thread 4(1)
從這個功課中可看出,多執行緒的執行次數是隨機分配的,所以大家都會輪流執行,出現Making是thread類別被new的時候,呼叫建構子產生的,也相當於那個時候才建立執行緒。
寫法僅供參考,畢竟Java所學淺薄>”<
(大家記得註解和程式碼要自己重新打過唷,工讀生會檢查)
/*11967046
* 將3/9課程中所教授之SimpleThread.java程式,
* 利用實作Runnable介面重新改寫之。
* */
public class s11967046 {
public static void main(String[] args) {
for(int i = 0; i<5; i++){
//new一個thread類別
thread r1 = new thread();
//new一個Thread類別,並傳入一個Runnable物件稱r1
Thread t1 = new Thread(r1);
//將執行緒丟入Runnable Pool中等待被run方法呼叫
t1.start();
}
System.out.println("All Threads Started");
}
}
class thread implements Runnable{ //實作Runnable
private int countDown = 5; //控制執行次數的變數
private static int threadCount = 0; //計算執行緒已被執行幾次的變數
private int threadNumber = ++threadCount ; //儲存threadCount變數
//thread建構子,當被呼叫時會執行
public thread(){
System.out.println("Making " + threadNumber);
}
public void run(){
while(true){
System.out.println("Thread "
+ threadNumber + "(" + countDown + ")");
//若是countDown等於0,結束run方法
//代表這個執行緒被建立後,迴圈將會跑五次
if (-- countDown ==0){
return;
}
}
}
}
隊長,我覺得你應該要控制流量
回覆刪除否則老師遲早會找上你...
話說我的網誌到底有多少人看呀@@" 因為Google那邊幫我統計的其實不多的樣子0.0" 老師應該不會找上來吧XD
回覆刪除