大家好...............  |----------------------->
  |    子线程1            |
  |<----------------------
主|
  |---------------------->
线|    子线程2           |
  |<----------------------
  |
程|
  |
  |---------------------->
  |    子线程2           |
  |<----------------------
  |
现在正在做一个Java的Application,遇到了这样一个问题.主线程管理三个子线程,主线程用到了Timer类,定时同时起动三个子线程.现在做好了冷关闭,就是界面按钮按下后,设置一个状态FLAG,主线程时间到了需要启动子线程的时候,发现状态FLAG不能再启动新线程了,但是要等待正在执行中的三个子线程,执行完毕.但是在做热关闭的时候,出现了问题,虽然状态FLAG不能再启动新线程了,但是前面已经开始了的子线程,没办法被杀掉.这个问题困扰着,很郁闷.....前提一,主线程不关闭.
前提二,子线程只运行一次(里没有循环),下次timer到的时候,再启动一个新的子线程.

解决方案 »

  1.   

    现在就是这样的一个问题,不知道在那里调用,TIMER类启动一个线程,这个线程就处于没人管的状态了.
      

  2.   

    Timer T1 = new Timer();
    T1.schedule(XX,XX,XX,XX)------------>启动的线程一--------->运行着......------->运行完回来.想在运行中的时候把线程一杀掉.
      

  3.   

    http://www.ttadd.com/diannao/HTML/27949.html
      

  4.   

    已前是有destory()的方法,但是现在好像不提倡用这个方法.好像是用sleep或interrupt,让他终止,自动销毁
      

  5.   

    但是在做热关闭的时候,出现了问题,虽然状态FLAG不能再启动新线程了,但是前面已经开始了的子线程,没办法被杀掉
    以前也做过一个类似的控制线程的东西,这个问题可以这样解决,判断这个子线程是否在运行,如果在运行的话就不用去执行了(或者杀死在运行新的)==>但是问题也随之出现,操作线程!那就要
    看LZ用的是社么操作系统,如果是WIN,那只能说SORRY了~~你没法去操作除非你去JNI(主要是没有好的开源的东东).如果是LINUX,那先恭喜一下,你可以执行SHELL来判断线程是否存在,如果数据量过大的话就保存到文本,APP去读文本来判断线程是否已在运行
      

  6.   

    我们这个系统是要在LINUX下面运行的,但是我们T1.schedule(XX,XX,XX,XX)------------>启动的线程一启动后,我们就没法控制它了,要如何用SHELL来判断呢?谢谢.
      

  7.   

    能说具体点吗?我们现在用JMX在做的控制.