作者ggggy (ggggy)
看板java
标题[问题] Thread 用 runnable 的疑问
时间Tue Jan 8 03:23:29 2008
我想问的是 在用 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
1F:推 H45:因为 main 也是一条 thread, 所以是这条在等另一个 thread 完 01/08 13:36