我试图清理应用程序中的资源,然后关闭它,从我以前的问题(Detecting When A Java Application Closes)开始我已经实现了以下代码完美地执行清理操作。在调用System.exit(0)后应用程序继续运行 - Java
//Intercept when the application closes
Runtime.getRuntime().addShutdownHook(new Thread()
{
@Override
public void run()
{
//Reclaim resources from MIDI usage
if(_midiInstance.CleanUp())
{
Logger.Add("Closed resources successfully on ShutDown");
}
else
{
Logger.Add("Failed to close all resources on ShutDown");
}
System.exit(0);
}
});
虽然System.exit(0);调用被理解和处理,应用程序继续运行,只是没有可见的GUI。我曾考虑过将System.exit(0)调用放在线程之外,但它超出了范围,没有任何其他线程或流正在运行。
当连接到ShutDown事件以确保一切关闭时,是否需要执行额外的步骤?
感谢您的时间,我非常感谢。
应用程序中的所有线程是否正确处理被中断? – justkt 2011-04-20 18:56:33
应用程序中没有其他线程,唯一的线程是钩入Shutdown事件时声明的线程。 – 2011-04-20 19:15:02