发现Runtime中一个奇妙功能

03-04-01 banq

运行下面一段代码:

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

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

详细文章:

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 就是这样调用的啦