问题标签 [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 投票
1 回答
1463 浏览

php - 在 PHP 中,max_execution_time 会影响通过 register_shutdown_function() 调用运行的关闭函数吗?

我注册了一个关机功能register_shutdown_function(),需要很长时间才能完成。PHPmax_execution_time会导致 PHP 终止这个函数还是会一直运行到它完成或出错?

0 投票
3 回答
4293 浏览

java - 如何实现在执行结束时自动关闭的线程池?

我正在编写一个理论上可以在不同环境中使用的 Java 客户端:Java main(),在 servlet 容器中,或通过依赖注入。

客户端实现内部连接线程池。

这种方法的问题在于,不知道内部线程池已实现这一事实的客户端用户将在关闭时看到他或她的应用程序“挂起”。我的用户需要知道向库发送 shutdown() 消息。

我想知道是否可以采取任何其他替代方法,一方面,允许我为我的连接启动一个线程池;另一方面,捕获一些事件,可能是 JVM 事件,表明 JVM 正在关闭,这将允许我调用我的 shutdown() 实现。

0 投票
2 回答
1685 浏览

java - 为什么 JBoss 5.1 中 ShutdownHook 中的 java.util.Logger 并不总是打印到 server.log?

我在 JBoss 5.1 中有一个 EJB3-Timer。 编辑: ShutdownHook 应该设置一个标志, doTimeOut() 可以优雅地终止(否则它将完成作业,并且在此计时器完成之前停止关机)。

我找到了这两个帖子,但它们来自 2005 年,并且该错误被标记为 CLOSED:

http://www.pankaj-k.net/archives/2005/08/jboss_shutdown.html

http://jira.jboss.com/jira/browse/JBAS-2087

anonymousLogger 抛出的异常是 NullPointer:

有任何想法吗?

0 投票
2 回答
9795 浏览

node.js - Node.JS 关闭挂钩

是否可以拦截默认kill信号并将其用作正常关闭的命令?这适用于 Solaris SMF。我发现拥有可停止服务的最简单方法是设置:kill为关闭脚本,然后在 Java 中添加关闭挂钩。在这种情况下,我想为 Node.JS 做这件事。我该怎么做?

编辑:目的是

  1. 停止接收新请求。
  2. 给现有的回调几秒钟来完成。
  3. 将一些信息写入stderr。

@alienhard 的第一个建议是使用process.on('exit'...,但似乎我无法用这种方法完成第二个。

0 投票
2 回答
1166 浏览

java - 调用 System.exit(0) 后应用程序继续运行 - Java

我正在尝试在应用程序关闭之前清理应用程序中的资源,继我之前的问题(Detecting When A Java Application Closes)之后,我已经实现了以下代码,它完美地执行了清理操作。

虽然 System.exit(0); 调用被理解和处理,应用程序继续运行,只是没有可见的 GUI。我曾考虑将 System.exit(0) 调用放在 Thread 之外,但它超出了范围,没有任何其他线程或流在运行。

在连接到 ShutDown 事件以确保一切都关闭时,我需要采取额外的步骤吗?

感谢您的宝贵时间,我非常感谢。

0 投票
3 回答
546 浏览

c++ - 受控的应用程序关闭策略

我们的(Windows 原生 C++)应用程序由线程对象和管理器组成。它写得非常好,其设计可以看到 Manager 对象控制其 minions 的生命周期。各种对象调度和接收事件;有些事件来自 Windows,有些是自产的。

一般来说,我们必须非常了解线程互操作性,因此我们使用手动同步技术,使用 Win32 临界区、信号量等。但是,有时由于事件处理程序重新进入等原因,我们在关闭期间会遇到线程死锁。

现在我想知道是否有一个像样的应用程序关闭策略,我们可以实施以使其更容易开发 - 比如每个对象从中央控制器注册关闭事件并相应地改变其执行行为?这是否太天真或脆弱?

我更喜欢不规定重写整个应用程序以使用 Microsoft 的并行模式库或类似的策略。;-)

谢谢。

编辑:

我想我正在寻求一种方法来控制复杂应用程序中的对象生命周期,其中许多线程和事件一直在触发。Giovanni 的建议是显而易见的(我们自己动手),但我相信必须有各种现成的策略或框架,以便以正确的顺序干净地关闭活动对象。例如,如果您想将您的 C++ 应用程序基于 IoC 范例,您可能会使用 PocoCapsule 而不是尝试开发自己的容器。在应用程序中控制对象生命周期是否有类似的东西?

0 投票
1 回答
434 浏览

java - 关闭钩子可以用于稍长的任务吗

我遇到了在关闭 java 应用程序时调用的关闭挂钩功能。

  • 我正在使用 SIGTERM 信号在 linux Box 上关闭我的 java 进程。

  • 在关机时,我想做一些磁盘 I/O(保留一些对象)并关闭打开的文件缓冲区(最多可能需要 1 分钟)

  • 您能否建议关闭挂钩是否是此用例的安全/可靠机制

  • 如果有更好的选择,请提出建议。

0 投票
3 回答
7067 浏览

java - 检测到 JVM 正在关闭

我有一个使用 addShutdownHook() 处理 Ctrl+C 的 Swing 应用程序,它可以正常工作,直到我有一个关闭任务调用一个函数,该函数在正常情况下会更改 JLabel 文本,此时它会挂起。

我认为问题在于 Swing EDT 要么已终止,要么正在等待某事。

有没有办法确定 EDT 已经终止或“完成”(这样我可以避免调用 Swing 方法),或者阻止 Ctrl-C 上通常的关闭所有窗口的行为?


只是为了澄清:

我在一个名为stop(). 在正常情况下,这可以被调用(连同它的补码start()),它会触发一系列导致 JLabel 更新的事情,以获得 astop()已经发生的视觉反馈。

当我的关闭挂钩运行时,我需要调用stop()以优雅地关闭一些资源。

我要问的是如何检测到 Swing EDT 不存在,所以我可以重写stop()以便它检测到缺少 Swing 并避免调用 Swing 函数。

0 投票
3 回答
4449 浏览

java - 如何优雅地关闭/终止java进程?

我正在运行一些 Java 应用程序,我需要从 Windows bat 脚本优雅地关闭/关闭所有应用程序。所以我的问题是:
如何通过 windows bat 脚本调用关机钩子并优雅地关闭 java 程序。

任何建议表示赞赏。提前致谢。

0 投票
1 回答
8748 浏览

java - netbeans 如何停止运行?

我正在使用 Netbeans 7 在 Linux 中使用 Java 进行编程,并且由于我的程序(有时)无法退出(可能不在这个 eo​​n 中)我创建了一个线程来处理关机

但是当我使用 netbeans (F6) 启动代码并通过“STOP”按钮停止它时,不会创建线程;但是如果我通过终端运行程序并发送 CTRL-c 线程被创建。
问题是:netbeans 启动什么类型的信号来终止程序?
或者(更好):如果我强制停止程序,我如何处理 netbeans 的停止,以便创建线程?
或者有没有办法修改停止的工作方式?

谢谢!