在Java程序退出時,希望做一些保存處理,比如釋放一些資源,或者保證事務執行完再推出。
在Linux環境下,需要使用kill -15 pid命令殺死進程,才能得到通知。
而window環境下,只能通過ctrl+c退出纔有效,命令殺死進程或者任務管理器殺死,都不會得到通知。
第一種方式
Runtime.getRuntime().addShutdownHook(new Thread(){
@Override
public void run() {
System.out.println("關閉,事後處理");
bossG.shutdownGracefully();
workerG.shutdownGracefully();
}
});
第二種
String s =System.getProperties().getProperty("os.name").toLowerCase().startsWith("win")?"INT":"TERM";
System.out.println(s);
Signal signal = new Signal(s);
Signal.handle(signal, new SignalHandler() {
@Override
public void handle(Signal signal) {
System.out.println("關閉");
bossG.shutdownGracefully();
workerG.shutdownGracefully();
}
});