62,566
社区成员




public class Outdb extends Thread implements SignalHandler {
........................
........................
private void signalCallback(Signal sn) {
System.out.println(sn.getName() + "is recevied.");
System.out.println("-----------------------------");
System.out.println("SINGAL:" + Thread.activeCount());
System.exit(0);
}
public void run() {
System.out.println("-----------------------------");
System.out.println("addShutdownHook run:" + Thread.activeCount());
appExit();
}
/**
* @重写信号处理函数
* @说明:当接收信号时调用调用信号处理函数
* @Date : 2010-02-01
* @param: 注册信号名称
*/
public void handle(Signal signalName) {
signalCallback(signalName);
// Chain back to previous handler, if one exists
if (oldHandler != SIG_DFL && oldHandler != SIG_IGN) {
System.out.println("another signal received , Chain back!");
oldHandler.handle(signalName);
}
}
/**
* @Main 主函数
* @Date : 2010-02-01
* @param: param 程序调用参数数组
*/
public static void main(String param[]) throws Exception {
Outdb doit = new Outdb();
Runtime.getRuntime().addShutdownHook(doit);
Signal sigTERM = new Signal("TERM");/* 注册KILL信号 */
Signal sigINT = new Signal("INT");/* 注册CTRL+C信号 */
doit.oldHandler = Signal.handle(sigTERM, doit);
doit.oldHandler = Signal.handle(sigINT, doit);
...................
}
}