我是这样写的:
thread mainThread(){
while(true){
init;
try{
new serverThread1;
...
new serverThread2;
...
...
}catch(e){
...
if(flag_exit)break;
...
}
}
}
通常,这个主线程会经常遇问题,所以会抛出异常,因为有while(true),它会从头开始运行。
但是,再运行的时候,中间建立的小线程不知道主线程重启,会继续存在,主线程再次
建立它们,很可能会出现问题。
所以我希望主线程异常的时候,它们全部终止,以便再次启动。或者,有什么别的思路
可以完成这样的功能。谢谢啦!
那么主线程和子线程之间就需要进行通信,java线程提供了interrupt()中断线程操作 的方法,可以让子线程的run方法在执行操作之前循环判断该标识,如果自己被主线程中断,就结束操作。
参考代码:
Thread t1= new serverThread1;
Thread t2 = new serverThread2;
如果异常了,就调用线程的中断操作:
t1.interrupt();
t2.interrupt();
在对应的线程中
serverThread2操作之前判断标识:
public run(){
while(!this.interrupted()){
}
//如果被外界主线程中断了,就结束循环。
}
在主线程内开启个守护线程试试 主线程结束 守护线程也不会继续运行