zoukankan      html  css  js  c++  java
  • RunTime.getRunTime().addShutdownHook的用法

    今天在阅读Tomcat源码的时候,catalina这个类中使用了下边的代码,不是很了解,所以google了一下,然后测试下方法,Tomcat中的相关代码如下:

          Runtime.getRuntime().addShutdownHook(shutdownHook);

       这个方法的含义说明:

           这个方法的意思就是在jvm中增加一个关闭的钩子,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭。所以这些钩子可以在jvm关闭的时候进行内存清理、对象销毁等操作。

    测试案例:

    package com.spring.sxf.study.springtradedao.java.hook;
    
    /**
     * 打印结果:
     * JVM开始运行
     * JVM开始运行结束
     * ==钩子函数执行开始==
     * 服务名字:远程服务
     * 服务代码:abc
     * ==钩子函数执行结束==
     */
    public class HookTest {
    
        private static Server server;
    
        public static void main(String[] args) {
            //JVM实例开始运行
            System.out.println("JVM开始运行");
            server=new Server("远程服务","abc");
            //添加钩子函数
            Runtime.getRuntime().addShutdownHook(new Thread(){
                @Override
                public void run() {
                    System.out.println("==钩子函数执行开始==");
                    System.out.println("服务名字:"+server.getName());
                    System.out.println("服务代码:"+server.getServer());
                    System.out.println("==钩子函数执行结束==");
                }
            });
            //JVM实例关闭
            System.out.println("JVM开始运行结束");
        }
    
    }
    
    /**
     * 测试服务
     */
    class Server{
    
        private String name;
        private String server;
    
        public Server(String name, String server) {
            this.name = name;
            this.server = server;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getServer() {
            return server;
        }
    
        public void setServer(String server) {
            this.server = server;
        }
    }
    View Code
  • 相关阅读:
    vim 多个文件切换
    Ruby 格式化代码 vim
    Ruby 配置vimrc
    print puts p
    开机跳过开机选择系统的选项界面
    Linux学习笔记:rm删除文件和文件夹
    Linux学习笔记:ps -ef、ps aux、kill -9
    Linux学习笔记:ctrl+z、ctrl+c、ctrl+d的区别
    Shell学习笔记:<<EOF子命令
    Linux学习笔记:crontab定时任务
  • 原文地址:https://www.cnblogs.com/shangxiaofei/p/12012912.html
Copyright © 2011-2022 走看看