スレッドオブジェクトがタイムリーに破棄されなかったことについて
876 ワード
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);nullポインタとして報告されますが、どうすればいいですか?
JAvaには独自のゴミ回収メカニズムスレッドがあります.スレッドが終了すると自動的に破棄されるのを待っている可能性があります.まだ破棄されていないので、nullに戻っていません.
システムを呼び出すことができますgc()は仮想マシンに注意し、もちろんすぐに破棄しないのか、それともそれが言ったのか.
投稿はこちらをご覧ください.http://bbs.csdn.net/topics/390953163