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吧
你可以调用system.gc()提醒虚拟机,当然立不立即销毁还是它说的算
发的帖子见这里: http://bbs.csdn.net/topics/390953163