0

我正在通过java的关闭挂钩功能,我的分析是..shutdownhook允许注册一个将立即创建但仅在JVM结束时启动的线程!所以它是某种“全局 jvm 终结器”,您可以在这个线程中制作有用的东西(例如关闭 java 资源,如嵌入式 hsqldb 服务器)。这适用于 System.exit() 或 CTRL-C / kill -15(当然不适用于 unix 上的 kill -9)。

请告知更多实际用途,如果可能的话,请提供一个小例子将有助于使理解更清晰..!

4

1 回答 1

1

当关闭钩子添加到运行时实例时,它会添加到线程列表中,以便在 JVM 干净终止时启动。

示例:使用关闭挂钩确保java.awt.TrayIcon从系统托盘中删除 a。

Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run() {
        try {
            if (SystemTray.isSupported()) {
                SystemTray.getSystemTray().remove(yourTrayIcon);
            }
        } catch (Exception e) {
            // failed to remove
            e.printStackTrace();
        }
    }
});

更多可以在官方文档中阅读。

于 2012-08-11T06:54:39.390 回答