是否可以在主线程或整个程序终止时调用方法?我知道Thread的.join()方法,但我认为它不适用于主线程。例如,如果我创建一个临时目录,我想在程序终止时删除该临时目录,但我希望在程序终止时发生这种情况,而不是像main方法那样。
我不想要这个:
public static void main() {
....Do something
....Delete temp directory
}
答案 0 :(得分:1)
只需添加一个关机钩..
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
System.out.println("ERMEHGERDDD");
}
});
来自Javadoc:关闭钩子只是一个初始化但未启动的线程。当虚拟机开始关闭序列时,它将以某种未指定的顺序启动所有已注册的关闭挂钩,并让它们同时运行。
当所有非deamon线程完成或调用System.exit()时,将调用shutdown hook。
答案 1 :(得分:0)
我看到了四种可能的方法。
答案 2 :(得分:0)
作为上述用户:Mad Programmer,您可以使用ShutdownHook。
public static void main(String[] args)
{
ShutdownHookThread shutdownHook = new ShutdownHookThread();
Runtime.getRuntime().addShutdownHook(shutdownHook );
}
private static class JVMShutdownHook extends Thread
{
public void run()
{
// tempDirectory.delete();
}
}