http://www.blogjava.net/zJun/archive/2006/03/12/34946.html

关闭钩子”(ShutdownHook)是这样一个概念:向虚拟机注册一个线程,当程序退出(Ctrl+C)时虚拟机会启动这个线程,我们可以在这个线程的run()中做一些清除的工作,如:释放数据库连接,关闭文件等.

注册:

Runtime.getRuntime().addShutdownHook(Thread t); 

注销:

Runtime.getRuntime().removeShutdownHook(Thread t);

[例子]

/**
 * 在这个线程中实现程序退出前的清理工作
 * 
 * @author Administrator
 * 
 */
class TestThread extends Thread {
    boolean isTerminal = false;

    public void run() {
        while (!isTerminal) {
               try {
                  Thread.sleep(1000);
               } catch (InterruptedException e) {
                  e.printStackTrace();
               }
            System.out.println("run sub thread");
        }
    }

    /**//**
     * 清理工作
     */
    public void onTerminal() {
        isTerminal = true;
        System.out.println("stop sun sub thread");
    }
}
/**//**
 * ShutdownDownHook测试类
 * 
 * @author Administrator
 * 
 */
public class TestShutdownHook extends Thread {
    TestThread testThread;

    public void addThread(TestThread t) {
        testThread = t;
    }

    /**//**
     * 实现程序退出前的清理工作
     */
    public void run() {
        System.out.println("This is ShutdownHook");
        testThread.onTerminal();
    }

    public static void main(String[] args) {
        TestShutdownHook m = new TestShutdownHook();
        TestThread t = new TestThread();
        t.start();
        m.addThread(t);
        // 注册退出处理线程
        Runtime.getRuntime().addShutdownHook(m);
    }
}

运行结果:

run sub thread
run sub thread
run sub thread
run sub thread
This is ShutdownHook
stop sun sub thread

可以看到:当程序退出时启动了TestThread线程,执行了定义的释放工作。

关闭钩子(ShutdownHook)相关推荐

  1. JAVA虚拟机关闭钩子(Shutdown Hook)

    Java程序经常也会遇到进程挂掉的情况,一些状态没有正确的保存下来,这时候就需要在JVM关掉的时候执行一些清理现场的代码.JAVA中的ShutdownHook提供了比较好的方案. JDK提供了Java ...

  2. tomat(16)关闭钩子

    [0]REAMDE 0)本文部分文字描述转自:"how tomcat works",旨在学习"tomat(16)关闭钩子"的相关知识: 1)problem+so ...

  3. tomcat 正常关闭_Tomcat的带有守护程序和关闭钩子的正常关闭

    tomcat 正常关闭 我的最后两个博客讨论了长时间轮询和Spring的DeferredResult技术,并且为了展示这些概念,我将我的Producer Consumer项目中的代码添加到了Web应用 ...

  4. layui.open 关闭之后触发_JAVA虚拟机关闭钩子(Shutdown Hook)

    前言 当你认真的去看一个组件的源码的时候,你会经常看见这种关闭钩子的函数,如果你不了解的话,谷歌一下,你就会发现如下文章就是搜索引擎出来的第一篇,不愧是出自我们优秀的厮哒哒之笔. 正文 Java 程序 ...

  5. Java中的JVM关闭钩子

    java面试题网站:www.javaoffers.com Java中的JVM关闭钩子 (翻译篇)关机钩子 也叫 关闭钩子 关机钩子是一种特殊的构造,允许开发人员插入一段代码,以便在JVM关闭时执行.当 ...

  6. 关闭钩子(shutdown hool)

    Java提供了一种优雅的方式供程序员来使用,这样可以保证清理代码的执行.本章将会说明如何使用一个关闭钩子(shutdown hool)来保证清理代码一定会被执行. 在Java中,虚拟机遇到两种事件的时 ...

  7. java8:关闭钩子shutdown hook

    参考资料: <Java中的关闭钩子(shutdown hook)> <JVM 的关闭钩子> 写在开头:本文为学习后的总结,可能有不到位的地方,错误的地方,欢迎各位指正. 目录 ...

  8. 深入JVM关闭与关闭钩子

    1. 简述JVM关闭 通常而言,对于JVM的关闭我们很少去关注,但是了解JVM的关闭能帮我们在JVM关闭时做一些合理的事情.首先JVM的关闭方式可以分为三种: 正常关闭:当最后一个非守护线程结束或者调 ...

  9. nodemanager不能正常关闭_Java虚拟机关闭钩子(Shutdown hook)

    作者:俩右 出处:https://segmentfault.com/a/1190000038298447 源码点击 study:https://github.com/xiaoshuanglee/stu ...

最新文章

  1. Python 的练手项目有哪些值得推荐?
  2. 了解Django之前
  3. linux ls模糊查询,linux – 找到和ls的通配符
  4. 使用tomcat时,不用给webapps文件放入文件,直接访问项目方法
  5. 用Mage::log來做調試
  6. 碧蓝航线8.20服务器维护,《碧蓝航线》8月20日更新维护公告
  7. vue获取url中ip_Kubernetes 集群中这样获取客户端真实 IP
  8. 嵌入式系统开发笔记100:使用FlyMcu下载程序到STM32单片机
  9. 基于单片机的八路抢答器系统设计(#0402)
  10. VTN:视频Transformer网络
  11. token与JWT详细介绍
  12. shell脚本中的expr
  13. 多核时代多线程编程(一)基本策略
  14. PHP+AJAX高性能聊天室(群聊+私聊)
  15. 高中会考计算机试题及答案,高中计算机会考试题及答案
  16. 计算机英语boot,电脑开不了机显示英文boottmgr
  17. 在安装sublime之后,我为何毫不犹豫卸载了Dreamweaver?
  18. 华为云与阿里云那个好
  19. 机器学习_评价指标Accuracy(准确率)、Precision(精准度/查准率)、Recall(召回率/查全率)、F1 Scores详解
  20. Linux菜鸟到老鸟的那些建议

热门文章

  1. YOLO_ Real-Time Object Detection 实时目标检测
  2. CSS美化滚动条的方法
  3. Scrapy + Redis 分布式爬取58同城北京全站二手房数据
  4. 树莓派AI视觉云台——4、树莓派的登录控制方式
  5. 排序算法 —— 选择排序
  6. Netty实战 IM即时通讯系统(二)Netty简介
  7. 大学计算机基础B这本书哪有,大学计算机基础b试卷
  8. 重庆市计算机二级考试大纲,重庆市二级计算机考试大纲.doc
  9. 1030 完美数列 (25 分)(c语言)
  10. 编辑距离—leetcode72