JVM 自行响应信号。有些会导致 JVM 正常关闭,其中包括运行关闭挂钩。其他信号将导致 JVM 中止而不运行关闭挂钩。
使用 Runtime.addShutdownHook(Thread) 添加关闭钩子。
我不认为 JDK 提供了在 Java 应用程序中处理信号的官方方法。但是,我确实找到了这篇 IBM 文章,其中描述了使用一些未记录的
sun.misc.Signal
类来完成此操作。该文章的日期为 2002 年,使用的是 JDK 1.3.1,但我已经确认 sun.misc.Signal
类仍然存在于 JDK 1.6.0 中。
这篇文章描述了Oracle HotSpot VM如何在内部使用信号,并描述了添加自定义信号处理程序(信号链)的方法。这无法使用 Java 语言来完成,但需要自己的本机库来挂钩 JVM。