一个java.lang.Thread类的对象,如果没有变量来引用它了,但是该线程又没有执行完,试问JVM是否会回收该线程对象?为什么?

解决方案 »

  1.   

    例如下面的代码public class ThreadA extends Thread{
        public void run(){
          while(true){
               System.out.println("1");
    }
         }}
    public class Test{
       public static void main(String[] arg){
          ThreadA a = new ThreadA();
          a.start();
          a = null;}}
      

  2.   

    上面程序中,创建的线程TheadA a是否会被JVM回收呢?为什么?
      

  3.   

    首先,一个java.lang.Thread类的对象如果没人引用,则不会开始执行.
    一旦开始执行.如果不执行完,则不会被回收
      

  4.   

    jvm我知道会用计数法回收不再有用的对象来释放内存,具体什么时候回收,jvm都没有说,自己就更不明白了.
    不过,一旦你的对象没有再被引用,肯定的是jvm会把它当垃圾