`

java钩子-ShutdownHook

 
阅读更多

在线上Java程序中经常遇到进程程挂掉,一些状态没有正确的保存下来或者程序中尚有一些未完成的任务,这时候就需要在JVM关掉的时候执行一些清理现场的代码。Java中得ShutdownHook提供了比较好的方案。
  JDK在1.3之后提供了Java Runtime.addShutdownHook(Thread hook)方法,可以注册一个JVM关闭的钩子,这个钩子可以在以下几种场景被调用:

  • 1)程序正常退出
  • 2)使用System.exit()
  • 3)终端使用Ctrl+C触发的中断
  • 4)系统关闭
  • 5)使用Kill pid命令干掉进程

注:在使用kill -9 pid是不会JVM注册的钩子不会被调用。
在JDK中方法的声明:
public void addShutdownHook(Thread hook)
参数
hook -- 一个初始化但尚未启动的线程对象,注册到JVM钩子的运行代码。
异常
IllegalArgumentException -- 如果指定的钩已被注册,或如果它可以判定钩已经运行或已被运行
IllegalStateException -- 如果虚拟机已经是在关闭的过程中
SecurityException -- 如果存在安全管理器并且它拒绝的RuntimePermission(“shutdownHooks”)

分享到:
评论

相关推荐

    重载内核实现绕过一切钩子-附详细文档

    在IT领域,尤其是在系统安全和逆向工程中,绕过钩子(hook)技术是一种常见的技术对抗手段。本文将深入探讨“重载内核实现绕过一切钩子”的概念,以及如何通过驱动程序来实现这一目标。我们将主要关注内核级别的操作...

    屏颜色拾取器-api-全局钩子-鼠标钩子-源码

    在这个特定的“屏颜色拾取器”项目中,开发者利用API(应用程序编程接口)来实现这一功能,并且结合了全局钩子和鼠标钩子的技术。 首先,API是操作系统提供的一系列函数和方法,让程序员能够访问系统功能,如图形...

    java钩子实现源码

    Java钩子(Hook)机制是Java虚拟机(JVM)提供的一种高级机制,允许程序员在特定的事件发生时插入自定义的行为。这个机制基于Java的动态代理和反射API,使得我们可以在程序运行时对某些行为进行拦截和处理。在Java中...

    C# 键盘钩子 - WARIII 改键

    在IT领域,尤其是在游戏编程和系统级别的交互中,键盘钩子是一种常见的技术,它允许程序拦截和处理键盘输入,而不必是当前活动窗口。在这个场景中,“C# 键盘钩子 - WARIII 改键”指的是使用C#语言编写的一种特定...

    C#全局钩子-按键

    全局钩子是Windows编程中的一种技术,用于监听和捕获系统范围内的特定事件,例如键盘和鼠标输入。在C#中实现全局钩子,可以利用.NET Framework提供的WinAPI函数,结合P/Invoke技术来调用Windows API。本项目提供了一...

    google-java-format,.zip

    "google-java-format" 是一个由Google开发的开源项目,专门用于自动格式化Java源代码,使其遵循特定的编码风格和规范。这个工具旨在提高代码一致性,减少因代码格式问题引发的冲突,提升团队协作效率。它能快速地将...

    键盘钩子-windows消息机制-抓取用户按下的每一个按键

    在Windows操作系统中,键盘钩子(Keyboard Hook)是一种机制,允许开发者通过系统级钩子来监控和处理键盘事件。这通常涉及到对Windows消息系统的深入理解,因为键盘输入本质上是通过消息队列进行传递的。本项目提供...

    java-git-pre-commit-hook:用于Java Java EE项目的带有正则表达式的简单预提交钩子

    标题中的“java-git-pre-commit-hook”是一个专门为Java和Java EE项目设计的Git预提交钩子。预提交钩子是Git版本控制系统中的一种自定义脚本,它在代码提交到仓库之前运行,可以用来检查代码质量、格式化代码、运行...

    java鼠标钩子实现

    在Java中,实现鼠标钩子通常涉及到使用Java的`java.awt.MouseInfo`和`java.awt.event.MouseEvent`类,以及可能的`java.lang.reflect.Method`用于钩入系统级别的事件处理。 首先,`MouseInfo`类提供了获取鼠标状态的...

    java源码文件格式-google-java-format-git-pre-commit-hook:一个gitpre-commit钩子脚本,用

    java原始文件格式google-java-format-git-pre-commit-hook 一个git pre-commit钩子脚本,用于根据Google Java样式指南设置Java源文件的格式 将pre-commit脚本(具有该名称和可执行位设置)放在.git/hooks目录中。 该...

    java源码包---java 源码 大量 实例

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...

    Java钩子方法概念原理详解

    主要介绍了Java钩子方法概念原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    ShutdownHook-Java优雅停机解决方案.docx

    ShutdownHook-Java 优雅停机解决方案 ShutdownHook 是 Java 语言提供的一种钩子机制,当 JVM 接受到系统的关闭通知之后,调用 ShutdownHook 内的方法,用以完成清理操作,从而平滑的退出应用。这种有计划平滑的...

    hook_钩子程序-delphi

    【标题】:Hook_钩子程序-Delphi 在Delphi编程环境中,Hook技术是一种强大的功能,它允许程序员拦截和处理系统或应用程序级别的特定事件。钩子程序是实现这一技术的关键,它可以在操作系统或应用程序的特定点插入...

    jnativehook_java键盘钩子_hookapi_jnativehook_

    标题中的“jnativehook_java键盘钩子_hookapi_jnativehook”指的是Java中使用JNativeHook库来实现系统级键盘钩子的功能。JNativeHook是一个开源的Java库,它允许开发者在本地平台上设置全局键盘和鼠标事件监听器,而...

    易语言钩子源码实例---系统钩子实例

    在IT领域,钩子(Hook)是一种非常关键的技术,它允许程序员拦截并处理特定的系统事件或消息。在本教程“易语言钩子源码实例---系统钩子实例”中,我们将深入探讨如何使用易语言来实现钩子功能,特别针对入门者设计...

    java-黄金矿工-图片资源

    在这个Java黄金矿工游戏中,图片资源主要涵盖了背景、角色、物品等元素,如bg.jpg、bg1.jpg(背景图)、water.png(水体)、gold1.png、gold0.png、gold3.png(不同形态的金子)、peo.png(人物)以及rock1.png...

    通信类设计与钩子安装--实现了远程安装全局钩子c#源代码

    在IT领域,尤其是在Windows系统编程中,"全局钩子"是一种技术,允许程序监控系统级事件,如键盘、鼠标输入或者其他特定的系统消息。本文将深入探讨如何在C#中实现远程安装全局钩子,同时结合通信类的设计,尤其是...

    64位内核第二讲,进程保护之对象钩子-附件资源

    64位内核第二讲,进程保护之对象钩子-附件资源

Global site tag (gtag.js) - Google Analytics