在Java虚拟机中处理信号

时间:2020-03-05 18:46:41  来源:igfitidea点击:

是否可以在Java虚拟机中处理POSIX信号?

至少SIGINT和SIGKILL应该完全独立于平台。

解决方案

回答

也许Runtime#addShutdownHook?

回答

JVM自行响应信号。有些会导致JVM正常关闭,其中包括运行关闭挂钩。其他信号将导致JVM在不运行关闭挂钩的情况下中止。

使用Runtime.addShutdownHook(Thread)添加关闭挂钩。

我认为JDK没有提供处理Java应用程序中信号的正式方法。但是,我确实找到了这篇IBM文章,其中描述了使用一些未记录的sun.misc.Signal类来做到这一点。本文始于2002年,使用的是JDK 1.3.1,但我已经确认,sun.misc.Signal类仍存在于JDK 1.6.0中。