Chapter 16 : Shutdown Hook
概览
有些时候,我们需要我们的应用在结束时 执行一些clean的代码。但是,不能指望由用户永远按照我们设定的方式退出。
幸好 JVM 提供了一种方法,能够保证我们的clean up代码一定会执行。
在java中,jvm在下面两种事件发生时会关闭:
(1)程序正常退出,即System.exit方法执行。 或, 最后一个非守护线程退出。
(2)用户强制退出,比如ctrl+c 或者是直接关电脑。
在关闭时,能确定的事情是 jvm一定会走下面两步:
(1)jvm启动所有注册的shutdown hooks(如果存在)。
(2)jvm调用所有的uninvoked finalizers(如果必要)。
下面给出一个简单的例子:
首先 定义一个hook:
ShutdownHook.java
public class ShutdownHook extends Thread {
public void run() {
System.out.println("Shutting Down");
}
}
然后,注册这个hook
public class ShutdownHookDemo {
public static void main(String[] args) {
ShutdownHookDemo demo = new ShutdownHookDemo();
demo.start();
try{
System.in.read();
}catch(Exception e) {
}
}
public void start() {
System.out.println("Demo");
ShutdownHook hook = new ShutdownHook(); // 创建一个hook
Runtime.getRuntime().addShutdownHook(hook); // 注册这个hook
}
}
后面还有个swing程序的例子。hook类被作为内部类实现,方便访问到外部类中的私有成员。
Shutdown Hook in Tomcat
Tomcat的shutdown hook在org.apache.catalina.startup.Catalina类中。以内部类的形式实现,如下:
protected class CatalinaShutdownHook extends Thread {
public void run() {
if (server != null) {
try {
((Lifecycle) server).stop();
} catch (LifecycleException e) {
System.out.println("Catalina.stop: " + e);
e.printStackTrace(System.out);
if (e.getThrowable() != null) {
System.out.println("----- Root Cause -----");
e.getThrowable().printStackTrace(System.out);
}
}
}
}
}
(完毕)
分享到:
相关推荐
Apache Tomcat 最新源代码Apache Tomcat 最新源代码Apache Tomcat 最新源代码Apache Tomcat 最新源代码Apache Tomcat 最新源代码Apache Tomcat 最新源代码Apache Tomcat 最新源代码Apache Tomcat 最新源代码Apache ...
How Tomcat Works中文版
Tomcat8源代码
How Tomcat Work 源代码,对于了解tomcat工作机制非常有帮助。
How Tomcat Works 中文版+例程源码; 源码在src目录下
How Tomcat Works【英文PDF+中文HTML+源码】 How Tomcat Works 主要是讲解Tomcat如何运行的一些核心资料。
HowTomcatWorks书籍课程实例工程与代码 书籍剖析了Tomcat 4.1.12和Tomcat 5.0.18--一个免费的、开源的、深受大众欢迎的、代号为Catalina的servlet容器,并讲解其容器的内部运行机制。通过迭代实现一个简化版软件来...
此文档包含了tomcat6的全部源代码,同时,该源代码可以直接通过Eclipse编译运行,对于想要调试运行tomcat6的同志很有帮助!
how tomcat works一书中的全部代码 java类
tomcat的基本思想,学习完可以对理解spring的基本原理有大致了解,很值得学习
tomcat工作原理深入详解——HowTomcatWorks中文版.pdf
HowTomcatWorks(书和源码)
how tomcat works 高清版 学习tomcat必备书籍 how tomcat works
Apache Tomcat 7 源代码
How Tomcat Works 全书共20章!
tomcat源代码学习,以及详细分析,当然不是原创,前段时间看过的,希望对大家有帮助。
how tomcat works中文版 + 英文版,深入解析了tomcat的实现机制
Tomcat源代码学习研究(包括代码注释、文档、用于代码分析的测试用例)
How Tomcat works(PDF),不可用于商业用途,如有版权问题,请联系删除!
web开发 how-tomcat-works