文章出自:http://blog.youkuaiyun.com/cuiran/article/details/6133745
java.lang.Runtime类提供了一个addShutdownHook()方法。添加虚拟机关闭钩子。有以下用途:
① 应用程序正常退出。在退出时只需特定的业务逻辑。
② 虚拟机非正常退出,如用户按下“Ctrl+C”组合键,操作系统关闭。在退出时候执行必要的挽救措施。我们可以将退出事件放在一个自定义线程的线程体中即可。
下面就是代码演示【TestOnExit】
- /**
- * TestOnExit.java
- * 版权所有(C) 2011 cuiran2001@163.com
- * 创建:崔冉 2011-1-12 上午09:23:37
- */
- package com.cayden.thread724;
- /**
- * @author 崔冉
- * @version 1.0.0
- * @desc
- */
- public class TestOnExit {
- public TestOnExit(){
- doShutDownWork();
- }
- private void doShutDownWork(){
- Runtime.getRuntime().addShutdownHook(new Thread(){
- public void run(){
- System.out.println("应用程序退出事件被响应");
- }
- });
- }
- /**
- * @param args
- */
- public static void main(String[] args) throws InterruptedException{
- // TODO Auto-generated method stub
- TestOnExit testor=new TestOnExit();
- long beginTime=System.currentTimeMillis();
- for(int i=0;i<10;i++){
- Thread.sleep(1000);
- System.out.println("i="+i);
- }
- long endTime=System.currentTimeMillis();
- System.out.println("应用程序耗时"+(endTime-beginTime)+"毫秒");
- }
- }
运行结果如下所示:
- i=0
- i=1
- i=2
- i=3
- i=4
- i=5
- i=6
- i=7
- i=8
- i=9
- 应用程序耗时10000毫秒
- 应用程序退出事件被响应