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

java - 如何确保在退出 Java 应用程序之前运行一段代码

我正在使用许可的 API,它具有从具有有限数量许可证的许可证服务器获取/释放许可证对象的方法。在我的应用程序开始时,我调用该方法来获取许可证,但我想确保即使我的程序突然终止/崩溃(异常、SIGTERM 等)也能释放它。关闭挂钩是解决此问题的最佳方法吗?

0 投票
2 回答
2926 浏览

java - 在 java 中的关闭挂钩内引发异常时会发生什么

如果在 java 中执行关闭挂钩期间抛出未捕获的异常,jvm 是否会立即退出而不运行其余已注册的关闭挂钩(如果有)?从javadocs:

与在任何其他线程中一样,通过调用线程的 ThreadGroup 对象的 uncaughtException 方法,在关闭挂钩中处理未捕获的异常。此方法的默认实现将异常的堆栈跟踪打印到 System.err 并终止线程;它不会导致虚拟机退出或停止。

似乎其他关闭挂钩应该运行......

作为一个后续问题,拥有一段可能在关闭挂钩中引发异常的代码可能不是一个好主意?如果无法避免,尝试在关闭挂钩内捕获异常是一种好习惯吗?

0 投票
2 回答
7824 浏览

java - Java - 如何让记录器在关闭挂钩中工作?

我有一个使用该类的专门记录器java.util.logging.Logger类。我希望能够在另一个类的关闭挂钩中使用这个记录器。但是,它似乎没有在关机时登录。根据我的阅读,可能已经为记录器本身激活了一个关闭挂钩,这导致了问题。

我怎样才能让它工作?理想情况下,我希望在日志文件中看到我实际上在进程终止时执行了关闭挂钩。

0 投票
2 回答
7142 浏览

java - Java 强制关闭程序

如何在退出时以编程方式强制关闭程序。我添加了调用 a 的关闭钩子,System.exit(0)但执行它似乎有问题。javaw.exe即使 Jframe 已关闭并执行了关闭挂钩,该进程仍会继续在内存中运行。

此外,当我手动关闭运行程序的批处理文件时,Windows 会抛出强制关闭消息。图片:http: //i.imgur.com/gy57OEV.png

0 投票
1 回答
733 浏览

java - 为什么这个shutdownhook 不起作用?

这是我的主要方法,它包含一个shutdownhook:

问题是JOptionPane根本没有出现。相反,框架关闭,但应用程序本身仍在运行。PS。我无法使用该WindowClosing事件,因为它不会在Mac OS XCmd上的+Q命令上触发。

0 投票
1 回答
2053 浏览

java - 关闭挂钩未打印到通过 Maven 执行的 JUnit 测试中的控制台

我有一个简单的 JUnit 测试,它由 Maven 通过 @Test 注释标记的方法运行。我想将关闭挂钩放入该测试中,因为如果用户按下 CTRL-C,我想打印一些测试结果。我对以下几行进行了编码:

要运行它,我使用 Maven:

mvn clean test -DtestClassName=com.MyTest

问题是没有打印任何内容。看起来 System.out.println 还没有工作。我能做些什么来修复它?

0 投票
5 回答
1196 浏览

java - Shutdownhook in Java

I want to write the system shutdown time to a txt file. I am using the shutdownhook thread.

I have written the file writing mechanism in the run method of the thread. But it is not working.. This is my code..

0 投票
1 回答
698 浏览

java - 请求输入用户时替代 nohup

我有一个以 nohup 命令启动的 java 应用程序。现在停止命令只是该应用程序的 kill -15。这个应用程序是一个文件解析和写入数据库应用程序,它有一个关闭钩子,它拦截 kill 命令,然后做一些释放资源和清理数据库的东西......

现在,这个清理过程需要一些输入用户(Y 或 N)来释放每个文件(基本上,对于仍在解析的每个文件,应用程序要求等待其完成或中断进程并在 db 上进行一些清理)。

nohup 命令忽略标准输入,因此忽略 java 输入阅读器。我该如何解决?

谢谢!

0 投票
1 回答
2108 浏览

java - 在图书馆管理 ExecutorService 的最佳实践是什么?

在我的一个库中,我使用具有 5 个线程的固定线程池执行器;我的线程不是重量级的,我.get()有超时,但至于ExecutorService,我创建它,然后,这是“生死攸关”。

.shutdown{,Now}()当你完成它时,你应该这样做;但这是一个库,我无法提前知道它将如何使用:使用简单的main(), 在将由 servlet 容器管理的 webapp 中,其他。

这感觉不对。我怎样才能做得更好?我应该只使用除 a 以外的东西ExecutorService吗?

编辑链接到唯一的用户:这里;守护线程可能是一个解决方案,现在我不知道它们是否有我应该注意的缺点......

0 投票
2 回答
182 浏览

java - 无头 JAR 可以向主线程添加关闭挂钩吗?

我想创建一个可在我的许多项目中共享的可重用 JAR。在这个 JAR 中,当调用某个方法时,需要创建多个线程。

我希望能够添加一个关闭Runtime.addShutdownHook(...)钩子main(String[])

所以我问:任何 JAR 中的任何方法都可以访问“主”线程并为其添加关闭挂钩吗?如果是这样,怎么做?