当前位置: 代码迷 >> J2SE >> 一个简单例子:关于java线程对象的销毁有关问题, 非常困惑
  详细解决方案

一个简单例子:关于java线程对象的销毁有关问题, 非常困惑

热度:48   发布时间:2016-04-23 20:05:37.0
一个简单例子:关于java线程对象的销毁问题, 非常困惑!

public class ThreadTT extends Thread{

public int i = 0 ;
public ThreadTT(int iu){
i =iu ;
}

/**
 * @param args
 */
public static void main(String[] args) {
ThreadTT ttt = new ThreadTT(10) ;
ttt.start();

System.out.println(ttt.i);
}

@Override
public void run() {
            System.out.println("xXXXXX");
}
}


这里我疑惑的是,在ttt线程结束后,为啥System.out.println(ttt.i);还能输出10值,线程对象结束后,为什么引用还没有销毁?
如果想确保线程结束后,对应的对象也销毁,即System.out.println(ttt.i);会报ttt为null指针,应该怎么办呢?

------解决思路----------------------
java有自己的垃圾回收机制 线程结束后自动等待被销毁 可能还没销毁就再次调用 所以没有返回null吧
------解决思路----------------------
你这里没有销毁Thread对象

而且你也不能手动销毁Thread对象

------解决思路----------------------
你可以调用system.gc()提醒虚拟机,当然立不立即销毁还是它说的算