在线上Java程序中经常遇到进程程挂掉,一些状态没有正确的保存下来或者程序中尚有一些未完成的任务,这时候就需要在JVM关掉的时候执行一些清理现场的代码。Java中得ShutdownHook提供了比较好的方案。
JDK在1.3之后提供了Java Runtime.addShutdownHook(Thread hook)方法,可以注册一个JVM关闭的钩子,这个钩子可以在以下几种场景被调用:
- 1)程序正常退出
- 2)使用System.exit()
- 3)终端使用Ctrl+C触发的中断
- 4)系统关闭
- 5)使用Kill pid命令干掉进程
注:在使用kill -9 pid是不会JVM注册的钩子不会被调用。
在JDK中方法的声明:
public void addShutdownHook(Thread hook)
参数
hook -- 一个初始化但尚未启动的线程对象,注册到JVM钩子的运行代码。
异常
IllegalArgumentException -- 如果指定的钩已被注册,或如果它可以判定钩已经运行或已被运行
IllegalStateException -- 如果虚拟机已经是在关闭的过程中
SecurityException -- 如果存在安全管理器并且它拒绝的RuntimePermission(“shutdownHooks”)
相关推荐
屏幕颜色拾取器-api-全局钩子-鼠标钩子-源码 拉动颜色框进行调节。并且修改RGB参数可以得到想要的色值。。 鼠标左键在颜色框上按下。然后移动到想到的色值区域就放开鼠标就可以了
重载内核实现绕过一切钩子的驱动源代码-附详细文档 1:将内核文件映射到我内核空间去; 2:path KiFastCallEntry重定向
C# 键盘钩子 - WARIII 改键
本人封装的C#可用的全局键盘钩子类,直接添加引用dll文件就可以调用,操作非常简单。附有示例程序。
http://blog.csdn.net/penngo/archive/2010/12/17/6081283.aspx附件源码
hook_钩子程序-delphihook_钩子程序-delphihook_钩子程序-delphi
java原始文件格式google-java-format-git-pre-commit-hook 一个git pre-commit钩子脚本,用于根据Google Java样式指南设置Java源文件的格式 将pre-commit脚本(具有该名称和可执行位设置)放在.git/hooks目录中。 该...
用于抓取用户输入的键盘消息,已封装好类。无反钩子功能
java-git-pre-commit-hook 一个简单的(愚蠢的)带有regex的pre-commit挂钩,用于Java / Java EE项目。
通信类设计与钩子安装--实现了远程安装全局钩子c#源代码
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...
主要介绍了Java钩子方法概念原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
python 钩子函数 通俗 Python钩子函数是一种非常有用的编程技术,它可以让程序员在特定的事件发生时执行特定的代码。这种技术在很多应用程序中都得到了广泛的应用,比如GUI应用程序、Web应用程序等等。 Python钩子...
64位内核第二讲,进程保护之对象钩子-附件资源
php钩子示例-认识php钩子
叫大家如何制作钩子,用钩子,里面的例子会让你茅塞顿开!入门者的首选课程
键盘钩子
http://blog.csdn.net/penngo/archive/2010/12/17/6081283.aspx的附件运行程序
java的鼠标键盘钩子程序swt实现,目前能找到的比较方现成的实现,用起来也比较方便。