在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中。