您现在的位置是:首页
>
退出应用程序的方法 为Java应用程序添加退出事件处理
为Java应用程序添加退出事件处理 一个完整的Java应用程序 通常至少要有一个应用程序的结束点 对于一般程序来说 系统开发者根据需要和个人的偏好 会在程序结束位置 通过添加Sy tem exit
为Java应用程序添加退出事件处理

一个完整的Java应用程序 通常至少要有一个应用程序的结束点 对于一般程序来说 系统开发者根据需要和个人的偏好 会在程序结束位置 通过添加System exit( ) 或System out( ) 来结束程序 或不加这些指令 让程序自然运行到结束 如 下列典型代码 package untitled ; /** * This application is to demo how an applcation end */ public class Test { public Test() { } public static void main(String[] args) { Test test = new Test(); // System out println( hello world ); //Do something before system exit System exit( );//也可以不写这句代码 让程序自然结束 } } 对于简单的应用系统 我们直接可以在System exit( )代码执行前 添加需要在应用程序退出前需要完成的工作 如 关闭网络连接 关闭数据库连接等 然而 对于比较复杂的多线程应用 线程运行的状态较复杂 我们就很难预料程序何时结束 如何能在应用程序结束事件到来时 处理我们要做的工作呢?这就用到了Java对应用程序的退出的事件出处理机制 对当前应用程序对象的获得 Java通过Runtime静态方法 Runtime getRuntime()通过Runtime的 void addShutdownHook(Thread hook) 法向Java虚拟机注册一个shutdown钩子事件 这样一旦程序结束事件到来时 就运行线程hook 我们在实际应用时候 只要将程序需要完成之前做的一些工作直接通过线程hook来完成 具体演示代码如下 /********************************************************** 本程序仅演示 如何在Java应用程序中添加系统退出事件处理机制 ***********************************************************/ package untitled ; import java util *; import java io *; /** * This application is used to demo how to hook the event of an application */ public class Untitled { public Untitled () { doShutDownWork(); } /*************************************************************** * This is the right work that will do before the system shutdown * 这里为了演示 为应用程序的退出增加了一个事件处理 * 当应用程序退出时候 将程序退出的日期写入 d:t log文件 ****************************************************************/ private void doShutDownWork() { Runtime getRuntime() addShutdownHook(new Thread() { public void run() { try { FileWriter fw = new FileWriter( d:\t log ); System out println( Im going to end ); fw write( the application ended! + (new Date()) toString()); fw close(); } catch (IOException ex) { } } }); } /**************************************************** * 这是程序的入口 仅为演示 方法中的代码无关紧要 ***************************************************/ public static void main(String[] args) { Untitled untitled = new Untitled (); long s = System currentTimeMillis(); for (int i = ; i < 1000000000; i++) { //在这里增添您需要处理代码 } long se = System.currentTimeMillis(); System.out.println(se - s); } } 在上述程序中,我们可以看到通过在程序中增加Runtime.getRuntime().addShutdownHook(new Thread()) 事件监听,捕获系统退出消息到来,然后,执行我们所需要完成工作,从而使我们的程序更健壮! lishixinzhi/Article/program/Java/JSP/201311/19528
很赞哦! (1050)