java 退出程序-铁路工厂3 模拟火车2012程序出现错误,现在退出
一个完整的java应用程序通常至少有一个应用程序端点。 对于一般的程序,系统开发者会根据需要和个人喜好在程序末尾添加system.exit(0)或system.out(-1)结束程序,或者不添加这些指令,让程序自然地运行到完成。
如:如下典型代码
包无标题14;
/**
* 此应用程序用于演示应用程序如何结束
*/
公开课测试{
公共测试(){}
public static void main(string[] args) {
测试 test1 = 新测试 ();
//......................
system.out.println("你好世界");
//在系统退出之前做一些事情
system.exit(0);//这段代码也可以不写,让程序自然结束。
}
}
对于一个简单的应用系统,我们可以直接在system.exit(0)代码执行之前添加应用退出前需要完成的工作,比如:关闭网络连接,关闭数据库连接等。
但是,对于更复杂的多线程应用,线程运行的状态更加复杂,我们很难预测程序什么时候结束。 当应用程序结束事件到来时,我们如何处理我们要做的工作呢? 这就利用了java的事件处理机制来实现应用程序的退出。
java通过runtime静态方法runtime.getruntime()通过runtime的void addshutdownhook(thread hook)方法向java虚拟机注册一个shutdown hook事件来获取当前应用对象,这样一旦程序结束事件到来,线程会运行Hook,在我们实际应用中,我们只需要在程序需要完成之前做一些工作,直接通过线程hook即可。 具体的demo代码如下:
/**************************************************** *** *****************************
本程序仅演示如何在java应用程序中添加系统退出事件处理机制
****************************************************** *** *****************************/
包无标题14;
导入 java.util.*;
导入java.io.*;
/**
* 此应用程序用于演示如何挂接应用程序的事件
*/
公开课无标题1 {
公共无标题1(){
做关机工作();
}
/**************************************************** *** ***************************
* 这是系统关闭前要做的正确工作
* 这里为了演示,为应用程序的退出添加了一个事件处理器,
* 应用程序退出时,将程序退出日期写入d:\t.log文件
****************************************************** *** ****************************/
私人无效doshutdownwork(){
runtime.getruntime().addshutdownhook(新线程() {
公共无效运行(){
尝试 {
filewriter fw = new filewriter("d:\\t.log");
system.out.println("我要结束了");
fw.write("申请结束!" + (new date()).tostring());
fw。 关闭();
}
赶上(ioexception前){
}
}
});
}
/**************************************************** *** ***
* 这里是程序的入口java 退出程序,只是为了演示,方法中的代码无关紧要
****************************************************** *** */
public static void main(string[] args) {
untitled1 untitled11 = new untitled1();
长 s = 系统。 当前时间毫秒();
对于 (int i = 0; i < 1000000000; i++) {
//在这里添加你的处理代码
}
long se = 系统。 当前时间毫秒();
system.out.println(se - s);
}
}
在上面的程序中java 退出程序,我们可以看到通过在程序中添加runtime.getruntime().addshutdownhook(new thread())事件监听器,我们可以捕捉到系统退出消息的到来,然后执行我们需要完成的工作,让我们的程序更加健壮!