【问题标题】:Java ShutDownHook not being fired on WindowsJava ShutDownHook 未在 Windows 上触发
【发布时间】:2013-09-01 13:18:59
【问题描述】:

我有以下 ShutdownHook 来检测应用程序何时退出:

    Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
        public void run() {

            // Do what you want when the application is stopping
            sendMsg("", "goOfflineExit", "12");
        }
    }));

这在 Mac 操作系统上完美运行,但由于某种原因,在 Windows 上没有任何反应。

任何想法我缺少什么?

【问题讨论】:

  • 有什么证据证明它没有被触发?也许它只是在运行时失败了。
  • 但更重要的是,如果您将关闭挂钩用于业务逻辑,那么这就是您的主要问题。它们是最后的手段,没有任何有用的保证。
  • @Marko....即使在我的情况下也没有 marko,情况也一样

标签: java shutdown-hook


【解决方案1】:

我能想到两种可能的解释:

  • sendMsg(...) 调用可能发生得太晚了;例如在流被关闭或刷新之后。

  • sendMsg(...) 调用可能会引发异常。关闭挂钩中抛出的未捕获异常通常不会被报告。

如果你给我们看sendMsg的代码,我们或许能找到更明确的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    相关资源
    最近更新 更多