我正在编写一个程序,所以我遇到了问题。
为什么不调用 finalize()方法?
public class ExOne extends Thread {
private String sD;
ExOne(String startUp, String shutDown){
System.out.println("Start-up message is: " + startUp);
sD = shutDown;
}
public void finalize() {
System.out.println("Shut-down message is: " + sD);
}
@Override
public void run() {
try {
for (int i = 0; i < 3; i++) {
System.out.println("Message " + String.valueOf(i));
Thread.sleep(1000);
}
}
catch (InterruptedException e){
System.out.println(e);
}
System.gc();
System.runFinalization();
}
}
public class Main {
public static void main(String[] args) {
ExOne exOneobj = new ExOne("start", "stop");
exOneobj.start();
}
}
所以输入是:
Start-up message is: start
Message 0
Message 1
Message 2
Process finished with exit code 0
没有消息&#34;关机消息已停止&#34;。 请帮帮我。
有什么问题?
答案 0 :(得分:0)
finalize()
,并且在你的情况下它永远不会发生,因为程序在exOneobj
有机会被清除之前结束。