有时我们需要监控我们的程序是否正常的执行。并不能实时的到服务器上去检查程序的运行情况。需要程序自动的通知管理员,出现异常,需要查询了。
或者我们使用kill命令杀死一个我们的程序是,也通知管理员。(但是使用kill -9 的命令,下面的代码是不可用的。)
public class ExitRunTimeException {
public static void main(String[] args) {
Runtime.getRuntime().addShutdownHook(new Thread(()->{
System.out.println("程序出现异常,调取钩子程序,进行释放资源并通知管理员");
notifyAndRelease();
}));
int i = 0;
while (true){
try {
Thread.sleep(1000L);
System.out.println("我在工作中。。。。");
} catch (InterruptedException e) {
e.printStackTrace();
}
i++;
if(i>10){//模拟程序异常的情况
throw new RuntimeException("error");
}
}
}
private static void notifyAndRelease() {
System.out.println("通知管理员");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("释放资源");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("释放完毕");
}
}