Shutdown Hook例子

钩子例子:

Java程序非法退出时,这个可以用来在写日志等操作,这样就能知道我什么时候退出的,或者是假死机状态的时候调用强制结束的时候用。

1.需要一个没启动的线程。

2.调用 Runtime.getRuntime().addShutdownHook(t);

参数:

hook - 一个已初始化但尚未启动的 Thread 对象

抛出:

IllegalArgumentException - 如果指定的挂钩已注册,或者可以确定挂钩正在运行或者已运行完毕

IllegalStateException - 如果虚拟机已经处于关闭进程中

SecurityException - 如果安全管理器存在并且拒绝 RuntimePermission("shutdownHooks")

程序正常退出,这发生在最后的非守护线程退出时,或者在调用 exit(等同于 System.exit)方法时。或者,

 为响应用户中断而终止 虚拟机,如键入 ^C;或发生系统事件,比如用户注销或系统关闭。

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);
	}

}

猜你喜欢

转载自woshixushigang.iteye.com/blog/1157819