熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

為Java應用程序添加退出事件響應

2022-06-13   來源: JSP教程 

  一個完整的Java應用程序通常至少要有一個應用程序的結束點對於一般程序來說系統開發者根據需要和個人的偏好會在程序結束位置通過添加Systemexit()或Systemout()來結束程序或不加這些指令讓程序自然運行到結束
  
  如下列典型代碼
  
  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();
  //
  Systemoutprintln(hello world);
  //Do something before system exit
  Systemexit();//也可以不寫這句代碼讓程序自然結束
  }
  }
  
  對於簡單的應用系統我們直接可以在Systemexit()代碼執行前添加需要在應用程序退出前需要完成的工作關閉網絡連接關閉數據庫連接等
  
  然而對於比較復雜的多線程應用線程運行的狀態較復雜我們就很難預料程序何時結束如何能在應用程序結束事件到來時處理我們要做的工作呢?這就用到了Java對應用程序的退出的事件出處理機制
  
  對當前應用程序對象的獲得Java通過Runtime靜態方法RuntimegetRuntime()通過Runtime的 void addShutdownHook(Thread hook) 法向Java虛擬機注冊一個shutdown鉤子事件這樣一旦程序結束事件到來時就運行線程hook我們在實際應用時候只要將程序需要完成之前做的一些工作直接通過線程hook來完成具體演示代碼如下
  
  /*****************************************************************************
  本程序僅演示如何在Java應用程序中添加系統退出事件處理機制
  *****************************************************************************/
  package untitled;
  import javautil*;
  import javaio*;
  
  /**
  * 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:\tlog文件
  **************************************************************************/
  private void doShutDownWork() {
  RuntimegetRuntime()addShutdownHook(new Thread() {
  
  public void run() {
  try {
  FileWriter fw = new FileWriter(d:\\tlog);
  Systemoutprintln(Im going to end);
  fwwrite(the application ended! + (new Date())toString());
  fwclose();
  }
  catch (IOException ex) {
  }
  
  }
  });
  }
  
  /****************************************************
  * 這是程序的入口僅為演示方法中的代碼無關緊要
  ***************************************************/
  
  public static void main(String[] args) {
  Untitled untitled = new Untitled();
  long s = SystemcurrentTimeMillis();
  for (int i = ; i < ; i++) {
  //在這裡增添您需要處理代碼
  }
  long se = SystemcurrentTimeMillis();
  Systemoutprintln(se s);
  }
  }
  
  在上述程序中我們可以看到通過在程序中增加RuntimegetRuntime()addShutdownHook(new Thread()) 事件監聽捕獲系統退出消息到來然後執行我們所需要完成工作從而使我們的程序更健壯!
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19693.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.