博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java System Hook( Java 运行钩子)
阅读量:6791 次
发布时间:2019-06-26

本文共 966 字,大约阅读时间需要 3 分钟。

我们开发的系统有时候会有进程挂掉的情况发生,换句话说就是我们的虚拟机进程over了,此时如果我们想要在进程关闭的时候执行某些如资源清理操作,那么我们可以使用Java提供的钩子Hook解决方方案。

JDK 提供了addShutdownHook(Thread thread)方法用于注册一个钩子,当Java进程关闭的时候,这些钩子将会被执行,但是,在进程正常运行的过程中,这些钩子是不会启动的。那么这些钩子在哪些情况下会被触发呢?大致有下面几点:

  • 1、程序正常运行结束
  • 2、关闭虚拟机进程,如程序中调用了System.exit(status)方法
  • 3、用户中断了虚拟机进程,如执行了ctrl+C操作、系统关闭或者操作系统宕机

下面我举两个例子演示下面两种情况:

  • 1、程序正常退出

RuntimeHookTest.java

public class RuntimeHookTest {    public static void main(String[] args) {    	Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {    		@Override    		public void run() {    			System.err.println("The Java VM shutdown normally!");    		}    	}));    }}复制代码

  • 2、用户按下ctrl + c退出程序

``

public class RuntimeHookTest {    public static void main(String[] args) {    	Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {    		@Override    		public void run() {    			System.err.println("The Java VM has been interupted.");    		}    	}));    	while (true) {        // 模拟程序一直运行    	}    }}复制代码

转载地址:http://lxogo.baihongyu.com/

你可能感兴趣的文章
天云郭宏:谈传统IDC困境 指点云建设
查看>>
《Linux From Scratch》第三部分:构建LFS系统 第六章:安装基本的系统软件- 6.6. 创建必需的文件和符号链接...
查看>>
云计算的最大问题是安全还是隐私?
查看>>
PDMS call Operating System Command
查看>>
如何取消codeblocks对msvcr100.dll的依赖?
查看>>
自动化生成 Openstack 新项目开发框架
查看>>
Jack Ma 你当初UT了没?
查看>>
IBM联手传智播客 落地大数据应用人才培养计划
查看>>
AMD正式宣布拆分芯片制造业务 中东大鳄入主
查看>>
OCZ内部RAID 0固态硬盘性能实测
查看>>
爱尔兰地方议会再次否决一光伏发电项目
查看>>
Appinions:IDC对物联网影响力位居前三
查看>>
《网络空间欺骗:构筑欺骗防御的科学基石》一2.4 集成化网络空间欺骗与计算机防御框架...
查看>>
渤海银行双活数据中心建设值得中小银行借鉴
查看>>
赛普拉斯推出业内首款专为IoT设计的微控制器架构PSoC 6
查看>>
中国人工智能学会通讯——互联网搜索技术的前沿探索 2 文本内容建模
查看>>
如何将数据可视化技术应用于广告投放?
查看>>
有工程师思维吗?什么是工程师思维?
查看>>
长安铃木与滴滴商业战略合作:基于试驾用体验拉近品牌和消费者距离
查看>>
英特尔支持下的Open HPC堆栈将于第四季度发布
查看>>