• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

无信不立

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

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

 

posted on 2019-12-09 19:14  无信不立  阅读(741)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3