java在一个主线程中开了很多小线程,当主程异常后,希望能关闭这些服务用的小线程,以免冲突。该怎么做

我是这样写的:
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()){

          }
            //如果被外界主线程中断了,就结束循环。

 }

在主线程内开启个守护线程试试 主线程结束 守护线程也不会继续运行