自学内容网 自学内容网

java使用ShutdownHook优雅地停止服务

在Java程序中可以通过添加关闭钩子,实现在程序退出时关闭资源、平滑退出的功能。 
使用Runtime.addShutdownHook(Thread hook)方法,可以注册一个JVM关闭的钩子,这个钩子可

这通常用于确保在应用程序退出时能够执行一些清理工作,比如关闭文件流、释放资源、断开数据库连接等。

要使用ShutdownHook,你需要实现一个Runnable接口,并将其添加到Runtime.getRuntime()的钩子列表中。以下是如何使用ShutdownHook的步骤和示例:

步骤:

  1. 创建一个Runnable实现类: 创建一个类实现Runnable接口,并在run方法中定义当ShutdownHook被触发时要执行的代码。

  2. 添加ShutdownHook到Runtime: 使用Runtime.getRuntime().addShutdownHook方法将你的Runnable实例添加到JVM的ShutdownHook列表中。

  3. 移除ShutdownHook(可选): 如果你需要在某个时刻移除ShutdownHook,可以使用Runtime.getRuntime().removeShutdownHook方法。

代码

package com.yang.SpringTest.java;

/**
 * <p>KillJavaTest</p>
 *
 * @author By: chengxuyuanshitang
 * Package com.yang.SpringTest.java
 * Ceate Time 2024-04-13 09:49
 */
public class ShutdownHookTest {
    public static void main (String[] args) {

        boolean flag = true;
        Runtime.getRuntime ().addShutdownHook (new Thread (new Runnable () {
            public void run () {
                System.out.println ("Run shutdown hook now.");
            }
        }, "ShutdownHookTest"));
        while (flag) {
        }
        System.out.println ("程序退出");
    }
}

在linux执行运行

javac ShutdownHookTest.java 

java ShutdownHookTest

再开一个新的命令窗口
jps

kill -15 3877

查看java运行的窗口输出

为什么要用kill -15呢,看下面的文章

【Linux】kill 命令使用-CSDN博客





原文地址:https://blog.csdn.net/wochunyang/article/details/137709287

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!