java中addShutdownHook钩子程序用途

本文介绍了如何使用Java中的Runtime类来添加钩子线程,以便在程序退出时执行资源清理工作。通过示例展示了钩子线程的具体用法及执行时机。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过我们的程序中运行完之后都会进行一些清理工作,比如关闭数据库资源,同步等操作。这时我们的钩子函数addShutdownHook有了用武之地。

1.钩子程序执行时机:

当程序正常退出,系统调用 System.exit方法或虚拟机被关闭时才会执行添加的shutdownHook线程。其中shutdownHook是一个已初始化但并不有启动的线程,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭。所以可通过这些钩子在jvm关闭的时候进行内存清理、资源回收等工作。 
2.用法

Runtime.getRuntime().addShutdownHook(Thread thread)

这里我们需要将一个线程对象传入,作为钩子程序的实现代码。本质上就是在jvm关闭时,执行一个线程。

3.实战

public class Client{
public void test1(){
	System.out.println("startting working......");
	Runtime.getRuntime().addShutdownHook(new Thread(){
		@Override
		public void run() {
			System.out.println("执行钩子线程");
		}
	});
	System.out.println("program endding");
}
}
执行结果:
startting working......
program endding
执行钩子线程
果然钩子线程是在主程序执行完毕之后才开始执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值