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

来源:互联网 发布:java自带的乘法函数 编辑:程序博客网 时间:2024/06/06 07:26

应用场景:某个程序发起了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;
                  }
         }
}

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

阅读全文
0 0
原创粉丝点击