发现Runtime中一个奇妙功能

banq 03-04-01

运行下面一段代码:



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.html#listing1

shyguy
2003-04-10 00:34

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

banq
2003-04-10 13:18

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

jxb8901
2003-04-10 17:06

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

iceant
2003-04-12 09:09

JBOSS 的 shutdown 就是这样调用的啦