首页 > 其他 > 详细

addShutdownHook的用法

时间:2014-03-13 07:23:09      阅读:605      评论:0      收藏:0      [点我收藏+]

addShutdownHook作为一个正常关闭Java程序的途径,其实是非常有用的。

 

JDK文档可知,当程序正常退出,或者为响应用户中断而终止虚拟机的时候,就会调用里面的线程,来作最后的退出处理。

 

ShutdownHook只是一个已初始化但为启动的线程。当JVM开始执行关闭序列时,它才开始已某种随机程序注册和并行执行shutdown hooks。这是关闭Java程序的一个重要的途径。在shutdown hooks里,可以执行各种关闭和释放资源的方法,例如:

 

bubuko.com,布布扣
    private void setupShutdownHook(final Initiator initiator) {

        Runtime.getRuntime().addShutdownHook(new Thread() {

            @Override
            public void run() {

                log.info("Shutting down the service... ");

                initiator.stop();

                journalEventHandler.clear();
                ticDbApp1EventHandler.clear();
                ticDbApp2EventHandler.clear();

                cdl.countDown();

                log.info("The Application is shutdown!");

            }
        });

    }
bubuko.com,布布扣

 

 举个栗子,如果是使用了BufferedWriter但是没有在最后执行flush()和close()的方法,很可能就会导致数据丢失。所以在shutdown hooks里面,执行这类型的关闭方法,非常重要。

 

在linux/unix下,Ctrl+C或者kill -15都可以;遗憾的是在Eclipse中无法实现。

 

参考:

http://docs.oracle.com/javase/1.5.0/docs/guide/lang/hook-design.html

http://stackoverflow.com/questions/191215/how-to-stop-java-process-gracefully

本文完

addShutdownHook的用法,布布扣,bubuko.com

addShutdownHook的用法

原文:http://www.cnblogs.com/techyc/p/3593724.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!