`

java 钩子方法

    博客分类:
  • demo
 
阅读更多

Runtime.getRuntime().addShutdownHook(shutdownHook);

   这个方法的含义说明:
       这个方法的意思就是在jvm中增加一个关闭的钩子,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭。所以这些钩子可以在jvm关闭的时候进行内存清理、对象销毁等操作。
 
一、编写个测试类
  
package com.test.hook;
public class TestShutdownHook {
 /**
  * @param args
  */
 public static void main(String[] args) {
  // 定义线程1
  Thread thread1 = new Thread() {
   public void run() {
    System.out.println("thread1...");
   }
  };
  // 定义线程2
  Thread thread2 = new Thread() {
   public void run() {
    System.out.println("thread2...");
   }
  };
  // 定义关闭线程
  Thread shutdownThread = new Thread() {
   public void run() {
    System.out.println("shutdownThread...");
   }
  };
  // jvm关闭的时候先执行该线程钩子
  Runtime.getRuntime().addShutdownHook(shutdownThread);
  thread1.start();
  thread2.start();
 }
}
 
 
打印结果:
 
thread2...
thread1...
shutdownThread...
 
 
或者:
写道
thread2...
thread1...
shutdownThread...
 
 
结论:
 
无论是先打印thread1还是thread2,shutdownThread 线程都是最后执行的(因为这个线程是在jvm执行关闭前才会执行)。
分享到:
评论

相关推荐

    Java钩子方法概念原理详解

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

    java钩子实现源码

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

    java鼠标钩子实现

    6. **处理事件**:当鼠标事件发生时,钩子函数会调用Java的回调方法,处理这些事件。 在描述中提到的链接指向了一个具体的博客文章,它很可能详细介绍了如何实现这一过程。`dict.jar`可能是这个实现的打包文件,...

    jnativehook_java键盘钩子_hookapi_jnativehook_

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

    java的鼠标键盘钩子程序swt实现

    在"java的鼠标键盘钩子程序swt实现"这个主题中,我们将探讨如何使用SWT来创建这样的钩子程序。 SWT是Eclipse项目的一部分,提供了与Java标准库AWT和Swing不同的GUI组件和功能。它直接与操作系统底层交互,因此可以...

    java实现的鼠标键盘钩子程序

    我在jBuilder里面用swing实现的该程序,其实很简单,就是调用了里面库文件的两个监听事件,当程序失去焦点以后仍然可以显示出当前鼠标的坐标。之所以上传是因为不少人可能对swt extension并不熟悉,导致自己用JNI...

    JAVA实现键盘钩子的源代码

    仅用JAVA实现全局键盘钩子的功能,很好很强大,学习下

    java鼠标钩子 运行程序 显示鼠标位置

    java鼠标钩子 运行程序 显示鼠标位置

    Java写游戏脚本钩子问题.docx

    标题“Java写游戏脚本钩子问题.docx”暗示了一个关于使用Java进行游戏脚本开发时遇到的特定问题,可能是关于在游戏中实现钩子(hook)机制的问题。钩子是一种编程技术,它允许开发者插入自定义代码到现有代码的特...

    Java写游戏脚本钩子问题.pdf

    标题"Java写游戏脚本钩子问题.pdf"暗示了本文将探讨如何使用Java进行游戏脚本开发时遇到的钩子(hook)技术问题。钩子在编程中通常指的是一个函数或方法,用于拦截和处理特定事件或行为,尤其在游戏开发中,钩子常...

    ZHookLib:android dalvik的java方法钩子库

    智库一个用于 android 的 java 钩子库,它包含一个 so 和一个 jar 文件。 以及来自的部分代码副本它与安卓 2.3-4.4 兼容。 艺术模式支持即将到来! 应用程序接口: com.morgoo.hook.zhook.ZHook类: 挂钩方法: ...

    键盘钩子实例(使用DLL和hook)

    在Windows编程领域,钩子(Hook)是一种强大的技术,它允许开发者拦截系统事件,例如键盘输入、鼠标操作等。在这个实例中,我们关注的是键盘钩子,它涉及到使用动态链接库(DLL)来实现。下面将详细介绍这个过程。 ...

    Java 剪贴板演示程序-完成复制粘贴功能.rar

    Java剪贴板演示程序是基于Java编程语言设计的一个实用示例,主要目的是向开发者展示如何在Java中实现复制和粘贴的功能。这个程序允许用户监控剪贴板的实时状态,并通过点击界面按钮来执行常见的复制和粘贴操作。在...

    java设计模式-模板模式

    3. **模板方法(Template Method)**:这是在抽象类中定义的方法,它调用了一个或多个钩子方法(即抽象方法或可选的具体方法)。模板方法执行整体算法的顺序,并且通常在最后调用钩子方法以完成算法的定制部分。 4....

    JAVA_API1.6文档(中文)

    java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于生成与呈现无关的图像的类和接口。 java.awt....

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

    Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象...

    设计模式之模板方法模式

    此外,它还包含了一些钩子方法(hook methods),这些方法在模板方法中被调用,但在抽象类中可能没有具体实现,留待子类去实现。 1. 抽象类(AbstractClass):定义一个操作中的算法骨架,封装不变部分,同时将可变...

    JAVA实现按键精灵效果

    3. 定义钩子处理函数:在Java中定义一个回调函数,这个函数将在钩子事件触发时被调用。在C语言中,这通常是一个指针函数。 4. 设置全局钩子:使用JNA的Platform类和`swt.win32.extension`中的函数,如SetGlobalHook...

    设计模式--模板方法模式java例子

    在Java中,模板方法模式通常通过抽象类来实现,这个抽象类定义了基本的操作步骤,这些步骤由钩子函数(hook method)来表示,它们在抽象类中可能没有具体实现或者只提供默认实现。子类可以通过继承抽象类并重写这些...

Global site tag (gtag.js) - Google Analytics