【发布时间】:2014-10-03 04:14:04
【问题描述】:
在 Linux (CentOS 6) 上运行的 Java 8 应用程序中,我希望能够优雅地终止它并记录捕获的信号类型(SIGTERM、SIGINT、SIGHUP)。
private static volatile boolean die = false;
public static void main(String[] args) throws InterruptedException
{
// Catch terminate signals
Runtime.getRuntime().addShutdownHook(
new Thread()
{
@Override
public void run()
{
System.out.println("Caught signal " + ???);
die = true;
System.exit(1);
}
}
);
int i = 0;
while (true && !die) {
System.out.println("Test " + i++);
Thread.sleep(4000);
}
if (die) {
System.out.println("Dying...");
Runtime.getRuntime().halt(1);
}
}
- 这是实现优雅终止的好方法吗?
- 如何打印捕获的信号?
【问题讨论】:
标签: java multithreading runtime signals