[問題] Thread 用 runnable 的疑問
我想問的是 在用 runnable 來做多執行緒時
join() 是當執行緒都 start 後 被join的執行緒 必須執行完才能換下一個
可是我的程式碼如下
//THREAD 函數
class WorkerThread implements Runnable{
/*宣告 變數 */
public WorkerThread(參數){
this.宣告=參數;
}
public void run(){
/*calculate*/
for () {
}
System.out.println("123");
System.out.println("456");
System.out.println("789");
}
}
public class matrix {
public static void main(String[] args) {
/* create thread*/
Thread []workers = new Thread[9];
for ( row=0; row<3 ; row++) {
for (col=0 ; col<3 ; col++) {
workers[x] =new Thread (new WorkerThread(參數));
x++;
}
}
for(int k=0;k<NUM_THREADS-1;k++){
/*Start thread*/
workers[k].start();
}
for(int k=0;k<NUM_THREADS-1;k++){
try{
workers[k].join(); //thread finished
}catch (InterruptedException ie) {}
}
}
}
------------------------------
在 main 中
有9個 THREAD 然後 用2個迴圈(作業要求)傳參數給THREAD 的CLASS
再來的迴圈是啟動 執行緒
再來的迴圈是 使用 join()
可是當我 執行時
thread 中的 run() 裡面的 println() 被分開執行了
應該是被其他執行緒搶用了
就是他不會輸出
123
456
789
會變成
123
123
456
789
123
後來我把 println() 都用一個 print() 來表示 就好了
請問一下:
這是join()的觀念不對嗎?
為什麼 不是等 run()中的都執行完才換下一個呢?
要如何修正呢?
謝謝大家~~!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.199.160
推
01/08 13:36, , 1F
01/08 13:36, 1F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):