当前位置: 首页 > 知识库问答 >
问题:

与运行时相比,更能区分停机。Java中的setShutdownHook()

程胤运
2023-03-14

有没有办法添加一个关闭挂钩,该挂钩仅在程序因系统关闭而关闭时触发。

我不希望在代码定期完成时运行代码,只在其他出口上运行<使用addShutDownHook,无论程序如何终止,线程都会运行

共有2个答案

花永昌
2023-03-14

我认为从JDK 1.8开始这是不可能的。至少,我还没有听说过这样的机制

当然,您可以使用JNI添加这种支持(如果底层操作系统支持)。

谭坚诚
2023-03-14

您可以为程序设置安全策略或添加安全管理器。

然后当<代码>系统。调用exit(常规退出),将调用SecurityManager的checkExit方法。在该方法中,您可以使用运行时removeShutdownHook取消注册关机挂钩。

 类似资料:
  • 问题内容: 与使用C ++或C相比,使用Java进行编程变得越来越舒适。我希望能感觉到使用JVM解释器引起的性能下降,而不是本地执行相同的“项目”。我意识到这里有一定程度的主观性。程序的质量将在很大程度上取决于良好的实施。我对一般意义上的以下方面感兴趣: 使用解释器时,必须有一些开销基线。有一些一般的经验法则要记住吗?10%15%?(我凭空想出了这些数字)我读过偶尔的博客,指出Java代码几乎与本

  • 本文向大家介绍Java中的线程与可运行的区别,包括了Java中的线程与可运行的区别的使用技巧和注意事项,需要的朋友参考一下 有两种方法可以创建新的执行线程。一种是将一个类声明为Thread类的子类。该子类应重写Thread类的run方法。然后可以分配并启动子类的实例。 创建线程的另一种方法是声明一个实现Runnable接口的类。然后,该类实现run方法。然后可以分配该类的实例,在创建Thread时

  • 问题内容: 我试图找出如果将主键更改为BIGINT(20)时表的性能是否会下降。目前,我正在使用INT(7),并且已经有大约 300.000个条目具有大ID(7或8位数字) 。我已经搜索了很多东西,但只发现它使用了更多的磁盘空间(这很明显)。 我所有的ID现在都有7位数字,但是我的客户希望更改为8位数字。将来我将无法轻松更改软件,因此我考虑现在使用BIGINT(20)以防万一。即使我不需要使用BI

  • 问题内容: 在Java中,可以具有运行时类型(即创建时的类型)和强制类型(您将其强制转换为的类型)。 我想知道这些类型的 专有 名称是什么。例如 创建为,但声明为。引用每个透视图类型的正确方法是什么? 问题答案: 我认为,区分 对象 (存在于执行时,只是具有执行时间类型)和具有编译时类型的 表达式 (例如变量)之间,这一点很重要。 因此,在这种情况下: 是类型的变量。它在执行时的值是对type对象

  • 问题内容: 我听说Java必须使用JIT来提高速度。与解释相比,这很合情合理,但是为什么有人不能制作可以生成快速Java代码的提前编译器呢?我知道,但是我认为它的输出通常不会比Hotspot快。 语言方面是否存在使这变得困难的事情?我认为可以归结为以下几点: 反射 类加载 我想念什么?如果我避免使用这些功能,是否可以将Java代码一次编译为本机代码并完成? 问题答案: 任何AOT编译器的真正杀手是

  • 用户期望页面的交互性和流畅。但是在传输到显示器的过程中每个阶段都可能出现闪烁卡顿。 接下来我们将了解用于识别和解决运行时性能降低的常见问题的工具和策略。 TL;DR 不要编写强制浏览器重新计算布局的JavaScript。分离读写函数,并首先执行读取。 不要使您的CSS过于复杂。使用更少的CSS和保持你的CSS选择器简单。尽可能多避免layout。 总是选择不触发layout的CSS。 绘画可能占用