因此,我正在开发一个必须处理用户统计信息和其他数据的命令行服务器程序,并且我有一个命令来停止服务器并将用户统计信息和数据保存到文件中。我想知道的是,是否有一种方法可以在服务器终止时不使用stop命令来保存用户统计信息和数据。我尝试创建一个新进程,并确定该进程何时终止,但是它没有告诉我服务器何时终止。有什么解决办法吗?

最佳答案

我假设您是在谈论某人Ctrl+C是该程序,或者以意外方式终止该程序的情况。我知道处理这种情况的最好方法是使用Shutdown Hook

从文档中:


  当虚拟机开始其关闭序列时,它将以未指定的顺序启动所有已注册的关闭挂钩,并使其同时运行


但这有可能对您不起作用,因为文档也说:


  在极少数情况下,虚拟机可能会中止,即在不干净关闭的情况下停止运行。当虚拟机在外部终止时会发生这种情况,例如在Unix上使用SIGKILL信号或在Microsoft Windows上使用TerminateProcess调用。如果本机方法出错(例如,破坏内部数据结构或尝试访问不存在的内存),则虚拟机也可能中止。如果虚拟机中止,则无法保证是否将运行任何关闭挂钩。

关于java - 您如何知道程序何时终止?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16053224/

10-15 09:19