`
Riddick
  • 浏览: 632999 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Runtime.addShutdownHook(Thread hook)方法解析

    博客分类:
  • J2SE
阅读更多
Runtime.addShutdownHook(Thread hook),JDK帮助文档中的解释是:
注册新的虚拟机来关闭钩子,Java虚拟机会为了响应以下两类事件而关闭:
1)程序正常退出,这发生在最后的非守护线程退出时,或者在调用exit方法时;
2)为响应用户中断而终止虚拟机,或发生系统事件,比如用户注销或系统关闭.

关闭钩子hook只是一个已初始化但未启动的线程.虚拟机开始启动其关闭序列时,它会以某种未指定的顺序启动所有已注册的关闭钩子,并让它们同时运行.

该函数的作用就是在你的程序结束前,执行一些清理工作,尤其是没有用户界面的程序.很明显,这些关闭钩子都是线程对象,因此,清理工作要写在run()里.根据JDK帮助文档,清理工作不能太耗时,要尽快结束,但仍然可以对数据库进行操作.
例子:
    /**
     * Add shutdown hook.
     */
    private void addShutdownHook(final FtpServer engine) {

        // create shutdown hook
        Runnable shutdownHook = new Runnable() {
            public void run() {
                System.out.println("Stopping server...");
                engine.stop();
            }
        };

        // add shutdown hook
        Runtime runtime = Runtime.getRuntime();
        runtime.addShutdownHook(new Thread(shutdownHook));
    }
分享到:
评论
1 楼 zhengyutong 2010-01-09  
嗯,学习了。

相关推荐

Global site tag (gtag.js) - Google Analytics