java - 关于shutdownhook的理解

标签 java

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

请提供更多实际用途,如果可能的话,请提供一个小例子,以帮助您更清楚地理解..!

最佳答案

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

示例:使用 shutdown hook 确保 java.awt.TrayIcon 从系统托盘中删除。

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

更多内容请阅读offical documentation .

关于java - 关于shutdownhook的理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11912628/

相关文章:

java - Hibernate 重写多对多条目?

java - 使用联接定义 JPA 存储库 native 查询

java - 如何在Java中绘制带星号的倒金字塔

java - 为什么 "A"或无输出只是此代码的可能输出,它也可能是 "AB"?

java - Spring Security Web 检查当前经过身份验证的用户是否具有角色

java - Spring - @Value 返回 null

java - 以 rx 方式与 Jersey 客户端合作

java - Java 的最大值(value)

java - 验证 Java 中反射方法的返回类型和参数

JavaFX Medusa Gauges 显示阈值 TileKpiSkin