安道理java虚拟机是可以自动回收的!
好像没有什么特别的方法!
表示关注!!!

解决方案 »

  1.   

    不明白,只要线程从run()里退出,线程就销毁了
    如果线程还没有运行完,就象从外部停止它,否则线程是不会被回收的
      

  2.   

    while(true){
    if(num=20){
    num=0;
    }
    myth[num]=new Thread(threadclass);
    num++;
    }
    你的这个循环可以退出吗???不能退出的话就算只一个也不能销毁。
    你这样用它会覆盖上次的一个线程对象,原来的也就不用你管了,你想再调用原来的线程也是不可能的。
      

  3.   

    那如果我用myth[num].destroy();那么下一次我还能不能myth[num]=new Thread(threadclass);好像不行吧,楼上的说要将线程丛run()里面退出,我该怎么推出,可以不影响让同一个myth[num]重新构造?
      

  4.   

    你试过了的吗???为什么说不行???
    如果你的循环是在run()方法里,就不用退出了。不过我还是不懂你这段代码的意思,构建20个MyThreadClass干嘛???你又没有让这些线程运行。你应该把你想要作的说清楚。
      

  5.   

    本来java虚拟机的自动回收功能都是不定时的进行的,要强制执行的话,就调用System类中的静态方法gc(),但这样不能保证回收对象内存。
      

  6.   

    public void run(){while(sss)//sss=false时会发生什么事情
    {
    ...
    }}
      

  7.   

    sss=false的话,应该不执行while里面的语句吧!怎么?
      

  8.   

    让线程退出的办法,我感觉最好的就是下面这样
    public MyThread extends Thread
    {
       private boolean running = true;
       public void run(){
           while(running){
               //这里放入线程的执行处理
           }
       }
       public void stopThread(){//设置一个函数stopThread,用来停止线程
        running = false;//将running=false,程序的run()中的while循环会退出,线程死亡
        }
    }
      

  9.   

    我也不明白你的代码,如果线程运行完后,会自动销毁,使用join()就可等待线程的结束,如果采用外来的停止线程就需要根楼上的一样去操作,使用全局变量。
      

  10.   

    帮忙-------------:发现错误如下:
    if(num=20)//need ==
    while(true)//there have no end