- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下程序结构
我的Main.java
public class Main
{
public static void main(String[] args)
{
Database db = new Database();
int totalNumberOfThreads = 0;
Thread newThread = null;
try
{
for (int i = 0; i < numberOfThreads; i++)
{
System.out.println("Starting autorsponder!");
newThread = new Thread(new AutoresponderHtml());
UncaughtExceptionHandler handler = new UncaughtExceptionHandler()
{
@Override
public void uncaughtException(Thread t, Throwable ex)
{
FileOutputStream fos = null;
try
{
fos = new FileOutputStream(new File("throwable.txt"), true);
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
PrintStream ps = new PrintStream(fos);
ex.printStackTrace(ps);
}
};
newThread.setName(threadName);
newThread.setUncaughtExceptionHandler(handler);
newThread.start();
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
System.out.println("Main ended");
}
}
我的 AutoresponderHtml.java 类
public class AutoresponderHtml extends Common implements Runnable
{
@Override
public void run()
{
}
}
如何将 addShutdownHook() 附加到每个启动的线程?
最佳答案
您不必将 ShutdownHook 附加到您启动的每个线程,尤其是因为这是不可能的。由于documentation :
A shutdown hook is simply an initialized but unstarted thread. When the virtual machine begins its shutdown sequence it will start all registered shutdown hooks in some unspecified order and let them run concurrently.
这只是在 JVM 关闭时又启动了一个线程。当然,您可以根据需要创建任意数量的 shutdownhook,但它们都将等待 JVM 关闭,而它无法实现您需要的行为。如果您仍然需要运行它,那么只需获取运行时并注册一个新线程即可:
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
//your logic here
}
});
但是,如果您需要在某个线程完成执行后运行一些逻辑,那么您需要其他解决方案。在线程实现中甚至可以是简单的 try-finally。
而且,不要太依赖它,你的 JVM 可以在没有执行 shutdownhook 的情况下停止。更重要的是,它并没有真正卡住 JVM 关闭进程,这意味着您的 JVM 可以在未完成 shutdownhook 逻辑的情况下停止。
关于java - 如何在多线程程序中附加 addShutdownHook(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33032851/
我有以下程序结构 我的Main.java public class Main { public static void main(String[] args) {
我有以下代码: public static void main(String[] args) throws InterruptedException { int [] intArray
在我们的网络应用程序中,我们使用 Launcher 调用一些命令行功能(不是我的想法)并查看结果。这或多或少是我们所做的: ClassWorld classWorld = new ClassWorld
我目前正在实现 ServletContextListener 并使用 contextDestroyed()在我的 Web 应用程序关闭之前运行清理任务。然而,我一直在阅读如何 Runtime.addS
我在谷歌应用程序引擎(java7)上运行这个java代码 我收到一个错误,但我不确定它是什么意思以及如何避免它? final TopicName topicName = pubSubF
我想在执行“kill -s 3”时终止Java应用程序。但 Java 转储线程信息。我需要使用不同的终止信号吗? 最佳答案 根据JVMs and kill signals ,使用信号 SIGQUIT
我什么时候真正需要调用此方法 Runtime.getRuntime().addShutdownHook() 以及何时或为何需要关闭我的应用程序。谁能通过举一些例子来解释一下这一点。 谢谢 最佳答案 据
我有一些调用 deleteOnExit() 的临时文件。我还有一个 runnable,我使用 addShutdownHook() 注册它,以便在调用 System.exit 时运行。 是否可以保证在我
我何时需要调用此方法 Runtime.getRuntime().addShutdownHook() 以及何时或为何需要关闭我的应用程序。谁能给我举个例子来解释一下。 谢谢 最佳答案 据我所知,我将在下
Thread 类的关闭 Hook 是在调用关闭的线程上运行其可运行代码,还是在其自身上运行,这存在一些冲突。 addShutdownHook 将 Thread 作为参数。这意味着线程将启动并在其自身上
我有一个多线程程序,其中一个线程可以监视多个线程。功能设计如下: 主程序进行初始化并启动观察线程,在 void Main() 中,我有一行 Runtime.getRuntime().addShutdo
编写 JavaFX 应用程序时,您可以使用 javafx.stage.Stage 方法为任何 setOnCloseRequest(EventHandler) 提供关闭 Hook 。如果您对主 Java
当我的程序使用addShutDownHook时,它的行为很奇怪? 最佳答案 addShutDownHook 只是添加一个新的 Runnable(线程),仅当启动 jvm 关闭序列时,该线程才会由 jv
我的代码看起来像抛出我不知道的异常: @ApiMethod(name = "analyzeImage") public Message analyzeImage(@Named("imgUR
我正在尝试使用 Spark 作为引擎类型在 Kylin 上构建一个立方体。该集群包含以下工具: 操作系统镜像:1.0-debian9 Apache Spark 2.4.4(从 1.6.2 更改) Ap
问题 我已经在我的 Ubuntu 开发机器和 BeagleBone Black 上运行了以下 Clojure 代码,并且可以确认它适用于前者,但不适用于后者。 (defn setup-shutdown
我是一名优秀的程序员,十分优秀!