请教一个多线程的问题

06-04-19 ronin

public class VerifyQueryThread implements Runnable{
public void run(){
...
}
}

public static void startMutiThread(){
VerifyQueryThread target = new VerifyQueryThread();
for(int j = 0; j < 40;j++){
(new Thread(target)).start();

}
writeLog();
}

我希望writeLog()方法在那40个新开的线程都运行完毕后再执行 应该怎么改写代码? 谢谢

banq
2006-04-20 11:28
>40个新开的线程都运行完毕后再执行
自己用一个字段记录来进行40个线程完成后的标志,不用试图通过顺序编程就以为实际运行也是这样,线程编程的特点是:你无法控制线程的先后运行次序。

phppsq
2006-04-27 11:06
>
> public class VerifyQueryThread implements Runnable{
> public void run(){
> ...
> }
> }
>
> public static void startMutiThread(){
> VerifyQueryThread target = new VerifyQueryThread();
> for(int j = 0; j < 40;j++){
> (new Thread(target)).start();
>
> }
> writeLog();
> }
>
> 我希望writeLog()方法在那40个新开的线程都运行完毕后再执
> ?应该怎么改写代码? 谢谢


改写后的代码如下:

public class VerifyQueryThread implements Runnable{
public void run(){
...
}
}

public static void startMutiThread(){
Thread t[] = new Thread[40];
for(int j = 0; j < t.length;j++){
t[j] = new Thread(new VerifyQueryThread());
t[j].start();
try{
t[j].join();
}catch(InterruptedException e){
....
}

}
writeLog();
}
}

猜你喜欢