如何在程序异常或正常退出JVM时执行特定代码

来源:互联网 发布:淘宝的组装电脑靠谱吗 编辑:程序博客网 时间:2024/05/19 20:38
<script type="text/javascript">google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//</script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>作者:jackliue-mail:suntoday@eyou.com通常情况下,我们一般调用System.exit()方法来退出JVM,查看System.exit()的设计可以发现这个方法调用了Runtime.getRuntime()的exit()方法,参考Runtime类结构我们可以得到关于系统退出时有关更多的方法。exit()方法会使java JVM退出,在Jdk1.3中,如果使用addShutdownHook()方法注册了一个线程,当通过调用exit()或通过用户中断(CTRL C)被关闭后,该线程将被激活调用,可以利用这一功能来在系统退出或异常退出捕捉这一时刻,做一些必要的退出操作。shutdownhook(关机钩)的主要目的是在系统中断后进行必要的清除,例如进行网络关闭、关闭打开的文件等操作,可以通过addShutdownHook()方法注册了一个这样的关机钩,并且允许你注册多个关机钩。在JVM退出之前,它会启动所有已注册的关机钩,并让这些关机钩线程同步执行。在一个关机钩执行之前可以使用removeShutdownHook()来删除一个已注册的关机钩,也可以调用halt()不调用关机钩线程直接退出JVM。下面是注册关机钩的例子,在addShutdownHook方法里构造了一个局部类,这个局部类实现了在系统中断退出时要执行的一些必要操作。在例子里,同时注册了两个关机钩。
import java.lang.*;public class TestExit{        public static void main(String[] args){                System.out.println("my java process");                //注册一个关机钩,当系统被退出或被异常中断时,启动这个关机钩线程                Runtime.getRuntime().addShutdownHook(new Thread(){                                                                                public void run(){                                                 //添入你想在退出JVM之前要处理的必要操作代码                                                System.out.println("T1");}                                });                //注册第二个关机钩                                Runtime.getRuntime().addShutdownHook(new Thread(){                                        public void run(){ System.out.println("T2");}                                });                System.exit(0);        }                }
当测试这段代码时,系统可能输出结果如下:
my java processT2T1
原来,这两个关机钩线程在程序退出被JVM并行执行,如果你设置了线程优先级,将先执行一个高优先级的钩子线程,否则将被随机并行执行。
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小鱼人打野出装 小鱼人符文 小鱼人连招 小鱼出装 潮汐海灵图片 潮汐海灵怎么玩 潮汐海灵出装 小鱼际 抓小鱼 小鱼小鱼快长大 炖小鱼 鱼下小鱼 煎小鱼 小鱼仙 小鱼村 小鱼酥 木小鱼 小鱼湾 庄小鱼 小鱼记 袋装小鱼 香煎小鱼 鱼小鱼 小鱼小鱼水中游 鱼是怎么生小鱼的 恶魔空间h小鱼仔 小鱼仔怎么做好吃 恶魔空间小鱼仔 小鱼仔 小鱼仔的做法大全家常 新鲜小鱼仔的做法大全 劲仔小鱼吃多有危害吗 新鲜小鱼仔怎么做好吃 小鱼仔怎么炒好吃 小鱼仔批发 炒小鱼仔的做法 劲仔小鱼厂家 劲仔小鱼干 劲仔小鱼价格 香辣小鱼仔 小鱼仔代理