<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    amp@java

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      99 隨筆 :: 0 文章 :: 228 評論 :: 0 Trackbacks
    通過
    Runtime.getRuntime().addShutdownHook(Thread hook)
    方法可以給當前的進程注冊一個清理線程,當進程退出的時候,會執行線程中的代碼。

    1、為了統一清理線程的實現,可以做一個Destroyable接口,實現此接口的類都有一個destroy()方法,里面包含了該類的清理過程,例如關閉數據庫連接、關閉Socket連接等。
    Destroyable接口的代碼:
     1 package net.blogjava.amplifier;
     2 
     3 /**
     4  * 建立此接口的目的是為了實現程序退出時的清理
     5  * 在Java控制臺程序中,用戶可以通過關閉命令行窗口或按下Ctrl+C來結束程序的運行
     6  * 這時候應該保證資源能夠被正確釋放,例如數據庫的連接、Socket的連接應該關閉
     7  * 實現了本接口的類的實例引用可以由一個ShutdownHook線程來操作
     8  * 此線程在虛擬機退出時執行,詳見Runtime.addShutdownHook()方法
     9  * @author amplifier
    10  *
    11  */
    12 public interface Destroyable {
    13     /**
    14      * 實現本接口的類需要實現此方法,方法中包含該類的清理代碼,
    15      * 例如關閉數據庫連接、關閉Socket連接等
    16      *
    17      */
    18     void destroy();
    19 }

    2、建立一個繼承于Thread的類ShutdownHook,里面的一個域是Destroyable實現類的引用,在該類的構造函數中可以傳入該Destroyable實現類。
    ShutdownHook的代碼:
     1 package net.blogjava.amplifier;
     2 
     3 public class ShutdownHook extends Thread {
     4 
     5     private Destroyable desObj;
     6     
     7     public ShutdownHook(Destroyable desObj){
     8         this.desObj = desObj;
     9             }
    10     
    11     @Override
    12     public void run() {
    13         if(this.desObj!=null){
    14             try{
    15                 this.desObj.destroy();
    16             }
    17             catch (Exception e) {
    18             }
    19         }
    20     }
    21 
    22     /** *//**
    23      * @param args
    24      */
    25     public static void main(String[] args) {
    26     
    27 
    28     }
    29 
    30 }

    3、在main()方法中注冊ShutdownHook。
     1     public static void main(String[] args){
     2         DestroyableImpl di = new DestroyableImpl();
     3         ShutdownHook sh = new ShutdownHook(di);
     4         Runtime.getRuntime().addShutdownHook(sh);
     5         Runtime.getRuntime().addShutdownHook(new Thread(){
     6             public void run(){
     7                 System.out.println("正在退出……");
     8             }
     9         });
    10         di.otherMethod();
    11     }
    posted on 2007-04-12 10:08 amp@java 閱讀(2648) 評論(0)  編輯  收藏 所屬分類: Java common
    主站蜘蛛池模板: 亚洲一级在线观看| 九九久久精品国产免费看小说| 在线观看免费黄网站| 亚洲国产精品自在拍在线播放 | 亚洲精品视频免费看| 久久免费视频观看| 亚洲欧洲日产国码久在线观看| 无码少妇精品一区二区免费动态| 亚洲女同成av人片在线观看| 怡红院免费的全部视频| 亚洲成a人片77777老司机| 最近2019免费中文字幕6| wwwxxx亚洲| 国产黄色片在线免费观看| 特级毛片全部免费播放| 亚洲情综合五月天| **毛片免费观看久久精品| 亚洲精品免费网站| 国产久爱免费精品视频| 亚洲无码在线播放| 青青草原1769久久免费播放| 亚洲人成人77777网站不卡| 黄a大片av永久免费| 一级毛片aa高清免费观看| 亚洲精品无码不卡| 日韩免费无码一区二区视频| 国产99视频精品免费视频76| 亚洲欧洲一区二区| 免费国产成人高清视频网站| 99热在线日韩精品免费| 亚洲午夜一区二区电影院| 亚洲av区一区二区三| 中文字幕免费不卡二区| 日韩亚洲国产综合高清| 亚洲国产精品成人一区| 8090在线观看免费观看| 人成电影网在线观看免费| 亚洲视频网站在线观看| 免费一级黄色毛片| 99精品视频在线观看免费专区 | 97国产在线公开免费观看|