发现Runtime中一个奇妙功能

运行下面一段代码:



package test;

public class ShutdownHookDemo {
public void start() {
System.out.println("Demo");
ShutdownHook shutdownHook = new ShutdownHook();
Runtime.getRuntime().addShutdownHook(shutdownHook);
}

public static void main(String[] args) {
ShutdownHookDemo demo = new ShutdownHookDemo();
demo.start();
try {
System.in.read();
}
catch(Exception e) {
}
}
}

class ShutdownHook extends Thread {
public void run() {
System.out.println(
"Shutting down");
}
}

运行程序自动关闭后的一个小“钩子”。

详细文章:
http://www.onjava.com/pub/a/onjava/2003/03/26/shutdownhook.htmllisting1

初看之下,第一感觉就是让你的系统在关闭之前能够做一些清理工作。
不知道如果主线程是daemon线程的时候,退出之前是否也能invoke其他的thread?

我认为当然,因为这属于Java系统的一个hook,是最本质,不取决于它的运行模式。

以前看JIVE的源码,发现JIVE中的连接池好象使用了HOOK来清除连接

JBOSS 的 shutdown 就是这样调用的啦