Runtime.addShutdownHook(Thread hook)方法解析

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

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

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

Java代码 <embed type="application/x-shockwave-flash" width="14" height="15" src="http://riddickbryant.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" lk_media="yes" lk_mediaid="lk_juiceapp_mediaPopup_1252865345343" flashvars="clipboard=%20%20%20%20%2F**%0A%20%20%20%20%20*%20Add%20shutdown%20hook.%0A%20%20%20%20%20*%2F%0A%20%20%20%20private%20void%20addShutdownHook(final%20FtpServer%20engine)%20%7B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20create%20shutdown%20hook%0A%20%20%20%20%20%20%20%20Runnable%20shutdownHook%20%3D%20new%20Runnable()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20public%20void%20run()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20System.out.println(%22Stopping%20server...%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20engine.stop()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20add%20shutdown%20hook%0A%20%20%20%20%20%20%20%20Runtime%20runtime%20%3D%20Runtime.getRuntime()%3B%0A%20%20%20%20%20%20%20%20runtime.addShutdownHook(new%20Thread(shutdownHook))%3B%0A%20%20%20%20%7D%0A" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
  1. /**
  2. *Addshutdownhook.
  3. */
  4. private void addShutdownHook( final FtpServerengine){
  5. //createshutdownhook
  6. RunnableshutdownHook=new Runnable(){
  7. public void run(){
  8. System.out.println("Stoppingserver..." );
  9. engine.stop();
  10. }
  11. };
  12. //addshutdownhook
  13. Runtimeruntime=Runtime.getRuntime();
  14. runtime.addShutdownHook(new Thread(shutdownHook));
  15. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值