我有一个项目应该在 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()) ;
}
}
这种方法的美妙之处在于,您没有特殊的“停止脚本”,每次您必须停止应用程序或重新启动机器时都需要记住运行该脚本。
关于java - 关于java终止程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8716556/