在Java窗口程序中按ctrl+c会强行中止Java程序。点击窗口关闭按钮也会强行中止程序。
Runtime.getRuntime().addShutdownHook(hooker)允许注册一个线程,在System.exit()之后、finalize被调用之前执
行它。 根据文档,如果有多个程序注册了hooker, 它们会被同时启用,顺序不被保证。
比如你想在关闭前透过
Jms发送消息,很可能JMS服务已经关闭.
接拦截系统信号。注意,在非Sun的jvm上无效。
网址:http://www.smotricz.com/kabutz/Issue043.html
简单应用如下:
SignalHandler handler = new SignalHandler(){
public void handle(Signal sig) { Server.this.exit(0);
} };
Signal.handle(new Signal("INT"),handler);
//hook ctrl+c
Signal.handle(new Signal("TERM"),handler);
//hook alt+f4
OK, 这下关闭程序可以有限处理了~
Runtime.getRuntime().addShutdownHook(hooker)允许注册一个线程,在System.exit()之后、finalize被调用之前执
行它。 根据文档,如果有多个程序注册了hooker, 它们会被同时启用,顺序不被保证。
比如你想在关闭前透过
Jms发送消息,很可能JMS服务已经关闭.
接拦截系统信号。注意,在非Sun的jvm上无效。
网址:http://www.smotricz.com/kabutz/Issue043.html
简单应用如下:
SignalHandler handler = new SignalHandler(){
public void handle(Signal sig) { Server.this.exit(0);
} };
Signal.handle(new Signal("INT"),handler);
//hook ctrl+c
Signal.handle(new Signal("TERM"),handler);
//hook alt+f4
OK, 这下关闭程序可以有限处理了~