Shutdown Hook例子
钩子例子:
当Java程序非法退出时,这个可以用来在写日志等操作,这样就能知道我什么时候退出的,或者是假死机状态的时候及调用强制结束的时候用。
?
1.需要一个没启动的线程。
2.调用 Runtime.getRuntime().addShutdownHook(t);
参数:
hook - 一个已初始化但尚未启动的 Thread 对象
抛出:
IllegalArgumentException - 如果指定的挂钩已注册,或者可以确定挂钩正在运行或者已运行完毕
IllegalStateException - 如果虚拟机已经处于关闭进程中
SecurityException - 如果安全管理器存在并且拒绝 RuntimePermission("shutdownHooks")
?
public class ShutdownDemo {public ShutdownDemo() {Thread t = new ShutdownHookThread("Here I am !!!");Runtime.getRuntime().addShutdownHook(t);System.out.println("Now shut me down …");System.exit(0);while (true) {System.out.print(".");try {Thread.sleep(300);} catch (InterruptedException ie) {}}}public static void main(String args[]) {new ShutdownDemo();}}class ShutdownHookThread extends Thread {protected String message;public ShutdownHookThread(String message) {this.message = message;}public void run() {System.out.println("ShutdownHookThread--");System.out.println(message);}}
?