JAVA:如何在进程停止时调用方法(甚至可能吗?)

时间:2009-07-16 04:40:14

标签: java shutdown

我想要它,所以当我的用户从命令行启动我的程序然后终止进程(例如ctrl + c)时,程序将通过关闭其所有连接来正常关闭。这甚至可能吗?我不能让它像GUI一样关闭时调用方法吗?该程序没有GUI。

请告诉我。

1 个答案:

答案 0 :(得分:8)

Here is a pretty good guide to signal handling in Java。它还包括关闭和终止案例,包括Ctrl-C。

您想要的特定电话是在运行时addShutdownHook

仍然存在一些你无法处理的特定情况......通常情况下,操作系统通常会有一些方法直接杀死应用程序而不给它自己保存的机会。您无法通过此机制涵盖所有案例。引用JavaDoc

  

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