java - 关于java终止程序

标签 java unix signals

我有一个项目应该在 unix 下永远运行。但是如果我们需要停止它,我正在考虑编写一个终止程序来优雅地关闭它。 我没有编写这种程序的经验。 谁能给我一些提示。 java中有信号捕获方案吗? 谢谢

最佳答案

您需要为您的应用程序添加一个关闭 Hook 。这是一个线程,当您的程序正常退出或 JVM 因响应用户中断、SIGTERM 信号或系统范围的事件(例如用户注销或系统关闭)而终止时,将启动该线程。看看 javadocs获取更多信息。

以下是创建关闭 Hook 时涉及的步骤:

1) 创建关闭钩子(Hook)类:

public class AppShutdownHook extends Thread{
    public void run(){
        logger.info("Running shutdown hook...") ;
        //cleanup e.g. close database connections etc
    }
}

2)注册关闭钩子(Hook):

public class App{
    public App(){
        Runtime.getRuntime().addShutdownHook(new AppShutdownHook()) ;
    }
}

这种方法的美妙之处在于,您没有特殊的“停止脚本”,每次您必须停止应用程序或重新启动机器时都需要记住运行该脚本。

引用:Shutting Down Java Apps

关于java - 关于java终止程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8716556/

相关文章:

Java 泛型的使用

java - Swing组件的ActionMap中默认 Action 的名称是否标准化?

java - Java 中的色度键效果

c++ - 在 C++ 中使用线程报告计算进度

c - pthread_kill 返回错误号 11

java - 内存计算器困惑java

linux - 如何使用 shell 脚本查找起始括号和相应结束括号之间的模式

unix - *nix 上是否有等效的 SQLCMD?

c - 如何在不更改其值的情况下获取先前设置的闹钟的剩余时间?

Android - SignalStrength 术语解释