问题标签 [shutdown-hook]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
12538 浏览

java - CTRL-C 如何与 Java 程序一起工作

当我按ctrl-c在控制台中按什么顺序停止应用程序线程并调用关闭挂钩时?

0 投票
3 回答
2797 浏览

java - 在关闭钩子中中断Java中的所有线程

我有一个简单的 java 程序,它创建了一系列存储在本地 tmp 目录中的临时文件。我添加了一个简单的关闭挂钩,它遍历所有文件并删除它们,然后在退出程序之前删除 tmp 目录。这是代码:

我的问题是创建这些文件的线程在启动关闭挂钩时可能没有终止,因此可能在listFiles()调用之后创建了一个文件。这会导致 tmp 目录不会被删除。我想出了 2 hacks:

黑客#1:

黑客#2:

两者都不是特别好的解决方案。理想的做法是让关闭钩子等到所有线程都终止后再继续。有谁知道这是否可以做到?

0 投票
2 回答
5132 浏览

java - Cygwin CTRL-C(信号中断)无法正常工作 - JVM 关闭挂钩未启动

我正在开发一个 Java 应用程序,它利用关闭挂钩来清理程序的终止/中断,但我注意到 Cygwin 的 CTRL-C 实现似乎不会触发关闭挂钩。从表面上看,它似乎已经中断了进程,将控制权交还给了命令行,但是根本没有触发进程的关闭挂钩,因此不会发生清理。

在 cmd 他们被抓住了,但由于各种限制,我需要以某种方式让他们在 Cygwin 中工作。

有没有办法通过 Cygwin 在正在运行的进程中触发 SIGINT,或者可能是我可以用来清理中断和终止的关闭挂钩的替代方法?

0 投票
1 回答
2949 浏览

java - 如何使用关闭挂钩优雅地停止 Guava AbstractScheduledService?

我正在使用带有调度程序的 AbstractScheduledService。一个简单的模式,如:

现在,我想像这样实现一个典型的关闭钩子:(下面的代码片段将在 main 方法中)

关闭挂钩来自典型的文档示例。它似乎不适用于 Guava 服务模式,因为服务本身运行在不同的线程上。

我的服务在 runOneIteration() 逻辑中有一个轮询循环。我希望它完成手头的当前任务,然后在看到 keepRunning 现在为假时优雅地关闭,因为 Shutdown 钩子在最近一段时间忙于当前迭代时被使用。

有什么想法可以优雅地完成(完成当前迭代然后关闭)?

0 投票
2 回答
1245 浏览

scala - 关闭钩子不会在 ^C (scala) 上启动

我正在尝试进行干净而优雅的关机,但由于某种原因,它不会执行。我试过了:

并且:

其中ThreadOperations.delayOnThread定义是:

但是当我运行我的程序(可执行jar,双重激活)时,钩子没有启动。那我做错了什么?在 scala 中添加关闭挂钩的正确方法是什么?它与我使用双重激活的事实有任何关系吗?

双重激活是这样完成的:

(scala 版本: 2.9.2 )谢谢。

0 投票
6 回答
18685 浏览

java - 关闭挂钩在 Eclipse 中不起作用

我通过以下方式添加了一个关闭挂钩

它可以正常工作,但是当我单击 Eclipse 中的红色停止按钮时就不行了。有没有办法在 Eclipse 中调用关闭挂钩?

0 投票
3 回答
4022 浏览

java - 来自 UNIX 的关闭挂钩

我试图让我的 Java 程序在我的 unix 服务器上正常退出。我有一个 jar 文件,我从早上的 cron 作业开始。然后在晚上,当我想关闭它时,我有一个 cron 作业,它调用一个找到 PID 的脚本并调用kill -9 <PID>. 但是,当我以这种方式终止时,似乎没有激活我的关闭挂钩。我也试过kill <PID>(没有-9),我遇到了同样的问题。如何确保调用关闭挂钩?或者,也许有更好的方法可以每天杀死我的进程。

0 投票
3 回答
3756 浏览

java - 具有多个线程的 java 关闭钩子

我正在尝试让一个关闭挂钩在我的 ubuntu 服务器上工作,但是我似乎遇到了多个线程的问题。使用基本的 ShutdownHook,当我使用 杀死进程时,以下代码确实有效kill <PID>,这意味着关闭行为被激活。

但是,带有附加线程的相同代码不会

有任何想法吗?

0 投票
1 回答
233 浏览

java - 任何要启动、关闭 Java 进程的模块(如 Jetty start.jar)?

大多数服务器都喜欢JettyWeblogic提供某种机制来通过调用(有时超过jmx)来启动或关闭服务器。可以始终保持东西从主要运行:

并杀死进程PID。但认为可能有一个不错的开源解决方案在网络空间中徘徊,增加了JMX花里胡哨的功能。

0 投票
1 回答
577 浏览

objective-c - iOS 5 - 关机钩子

我想在应用程序关闭时执行某些清理任务。我使用像这样的观察者:

当应用程序进入后台时得到通知。

问题是,如果应用程序崩溃,没有通知让我做某事。

我看到 testflight.com 使用挂钩来恢复崩溃信息,我想知道是否也可以检测崩溃并执行一些任务。

我的担忧是关于呼吁:

应用程序崩溃时未完成,从而使用户在顶部保持不变的位置图标。我知道崩溃不应该经常发生,但如果可以的话,我想在这种情况下尽可能多地进行清理。