应用场景:某个程序发起了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;
}
}
}
如此一来,这个线程就可以正常的关闭了。
最后
以上就是彪壮小鸽子最近收集整理的关于java jvm关闭事件,通知程序做某些事情的全部内容,更多相关java内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复