注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

kangzye的博客

加Q群25382780切磋java,加19360923群研究JavaScript

 
 
 

日志

 
 

java jvm关闭事件,通知程序做某些事情  

2010-07-18 14:02:55|  分类: java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

应用场景:某个程序发起了N个线程循环不停做某些事情,正常情况下这些线程需要被安全的停止方可保证数据不丢失,如果停电的情况那就没辙,那么有时候需要关闭服务器,那么如何让jvm告诉其内部的程序现在要关闭了呢?答案是使用钩子(hook)

某个线程需要向jvm注册钩子,让jvm在停止的时候通知它,做法是:
WorkThread extend Thread{
         class ShutdownCallbackThread extends Thread{
                  public void run(){flag=false;}//设置关闭筏值
         }
         private boolean flag=true;
         public void run(){
                  //regist hook
                  ShutdownCallbackThread hook = new ShutdownCallbackThread();
                  Runtime.getRuntime().addShutdownHook(hook);
                  while(flag){
                             ....working;
                  }
         }
}

如此一来,这个线程就可以正常的关闭了。

  评论这张
 
阅读(3048)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017