没有调用ShutdownHook&#39; kill -TERM <pid>&#39;

时间:2015-09-28 06:41:29

标签: java shutdown-hook sigterm

我从here

获得此示例应用程序
public class ExampleSignalHandler {
public static void main(String... args) throws InterruptedException {
    final long start = System.nanoTime();
    Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
        public void run() {
            System.out.format("\nProgram execution took %f seconds\n", (System.nanoTime() - start) / 1e9f);
        }
    }));
    int counter = 0;
    while(true) {
        System.out.println(counter++);
        Thread.sleep(500);
    }
}
}

这很好用,但是如果我在我现在的应用程序中执行此操作,则不会在

上执行
kill -TERM <pid>

但是

kill -1 <pid>
kill -KILL <pid>

但是有了这些信号,我在关闭应用程序之前没有足够的时间来完成我的操作。

我的应用程序中使用了一些Threads和JNI Wrapper,这会导致kill -TERM上没有调用shutdownHook的问题?

我需要这个,因为我的应用程序使用网络协议,我可以订阅变量。这个句柄必须在关闭之前取消订阅,否则服务器会因为一段时间后句柄太多而耗尽内存(服务器不在我的控制之下!)

0 个答案:

没有答案