<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 閱讀(2649) 評論(0)  編輯  收藏 所屬分類: Java common
    主站蜘蛛池模板: 特级毛片aaaa级毛片免费| 久久精品国产亚洲精品2020| 亚洲精品久久无码av片俺去也| 99热在线免费播放| 亚洲高清在线播放| 精品熟女少妇av免费久久| 亚洲精品日韩专区silk| 国产a视频精品免费观看| 亚洲小说区图片区| 成人午夜视频免费| 青草青草视频2免费观看| 亚洲а∨天堂久久精品| www免费插插视频| 亚洲av无码专区在线播放| 91香蕉在线观看免费高清| 亚洲国产综合精品中文第一| 成人影片麻豆国产影片免费观看| 亚洲一区二区三区无码国产| 最近的中文字幕大全免费版| 免费亚洲视频在线观看| 国产亚洲欧洲精品| 在线精品一卡乱码免费| 亚洲AV无码一区二区大桥未久| 亚洲黄片毛片在线观看| 成人黄网站片免费视频| 亚洲手机中文字幕| 又大又黄又粗又爽的免费视频| 一级做a爱片特黄在线观看免费看| 亚洲国产成人一区二区三区| 国产精品久久久久免费a∨| 羞羞网站免费观看| 亚洲AV无码第一区二区三区 | 成人性生交大片免费看午夜a| 亚洲国产成人AV网站| 国产av天堂亚洲国产av天堂| 人妻视频一区二区三区免费| 成年网站免费入口在线观看| 亚洲国产av一区二区三区丶| 亚洲午夜爱爱香蕉片| 久久久久久久免费视频| eeuss免费天堂影院|