`

java runtime 之 ShutDownHook

    博客分类:
  • java
阅读更多

 

根据 Java API, 所谓 shutdown hook 就是已经初始化但尚未开始执行的线程对象。在

Runtime 注册后,如果 jvm 要停止前,这些 shutdown hook 便开始执行。

 

有什么用呢?就是在你的程序结束前,执行一些清理工作,尤其是没有用户界面的程序。

 

很明显,这些 shutdown hook 都是些线程对象,因此,你的清理工作要写在 run() 里。

根据 Java API,你的清理工作不能太重了,要尽快结束。但仍然可以对数据库进行操作。

 

 

package dirk.runtime;

public class ShutDownHook implements Runnable {
	 public ShutDownHook() { 
	        // register a shutdown hook for this class. 
	        // a shutdown hook is an initialzed but not started thread, which will get up and run 
	        // when the JVM is about to exit. this is used for short clean up tasks. 
	        Runtime.getRuntime().addShutdownHook(new Thread(this)); 
	        System.out.println(">>> shutdown hook registered"); 
	    } 
	     
	    // this method will be executed of course, since it's a Runnable. 
	    // tasks should not be light and short, accessing database is alright though. 
	    public void run() { 
	        System.out.println("/n>>> About to execute: "  + ShutDownHook.class.getName() +  ".run() to clean up before JVM exits."); 
	        this.cleanUp(); 
	        System.out.println(">>> Finished execution: "  + ShutDownHook.class.getName()  + ".run()"); 
	    } 
	     
	        // (-: a very simple task to execute 
	    void cleanUp() { 
	        for(int i=0; i < 7; i++  ) { 
	            System.out.println(i); 
	        } 
	    } 

	    /** 
	     * there're couple of cases that JVM will exit, according to the Java api doc. 
	     * typically: 
	     * 1. method called: System.exit(int) 
	     * 2. ctrl-C pressed on the console. 
	     * 3. the last non-daemon thread exits. 
	     * 4. user logoff or system shutdown. 
	     * @param args 
	     */ 
	    public static void main(String[] args) { 
	         
	        new ShutDownHook(); 
	         
	        System.out.println(">>> Sleeping for 5 seconds, try ctrl-C now if you like."); 
	         
	        try { 
	        	System.out.println("jvm run run run");
	            Thread.sleep(5000);     // (-: give u the time to try ctrl-C 
	            System.out.println("jvm prepare to shutDown");
	        } catch (InterruptedException ie) {  
	            ie.printStackTrace();  
	        } 
	         
	        System.out.println(">>> Slept for 10 seconds and the main thread exited."); 
	    } 
}
分享到:
评论

相关推荐

    Java Runtime Environment JRE 1.4.2

    Java Runtime Environment (JRE) 1.4.2 是Java应用程序执行所需的关键组件,它为开发者和用户提供了在各种操作系统上运行Java应用的基础。这个版本是Sun Microsystems在2004年发布的一个重要里程碑,它在Java技术的...

    64位 java runtime 1.8.0.zip

    Java Runtime Environment(JRE)是Java程序运行所需的基础组件,它是Oracle公司提供的Java平台标准版(Java SE)的一部分。在本例中,我们讨论的是64位版本的JRE 1.8.0,适用于Windows操作系统。这个版本的JRE包含...

    Java Runtime Environment1.8.0

    Java Runtime Environment 1.8.0是Java开发和运行应用程序必不可少的一部分,它是Oracle公司发布的Java平台标准版(Java SE)的实现。这个版本是32位的,这意味着它设计用于在32位操作系统上运行,比如Windows XP、...

    Java Runtime Environment 1.6.0.7 (32-bit

    Java Runtime Environment(JRE)是Java程序运行所需的基础组件,由Oracle公司提供。1.6.0.7 版本是针对32位操作系统的一个特定发行版,这意味着它设计用于在32位Windows系统上执行Java应用程序。在这个版本中,Java...

    32位的Java Runtime Environment

    Java Runtime Environment(JRE)是Java程序运行所需的基础软件组件,它是Java开发工具集(Java Development Kit,JDK)的一部分。32位的Java Runtime Environment是专为32位操作系统设计的版本,允许用户在这样的...

    Java Runtime Environment-6.0

    Java Runtime Environment-6.0.26.exe

    java runtime environment 1.8.0_45 64bit

    Java Runtime Environment(JRE)是Java程序运行所需的基础组件,它是Oracle公司提供的Java平台的核心部分。JRE 1.8.0_45是Java 8的一个特定版本,64位版本则是为在64位操作系统上运行Java应用程序设计的。这个版本...

    java runtime environment 1.8.0_45 64bit.rar

    Java Runtime Environment(JRE)是Java程序运行所需的基础组件,它是Oracle公司提供的Java平台标准版(Java SE)的一部分。在本例中,我们讨论的是版本1.8.0_45,这是一个64位的版本,专为64位操作系统设计。这个...

    Java Runtime For MacOS X 10.7

    Java Runtime For MacOS X 10.7

    java runtime 最新版 1.8.0.271

    Java Runtime Environment(JRE)是运行Java应用程序所必需的基础组件,它包含了Java虚拟机(JVM)、类库以及其他支持Java程序运行的组件。最新版"1.8.0.271"是Oracle公司发布的Java SE 8的一个更新版本,主要用于...

    java runtime environment(JRE)安装 2020-11-4

    java runtime environment(JRE)安装 2020-11-4 一、搭建环境 1.1 安装Keil 5 官网下载:http://www2.keil.com/mdk5/ 百度网盘:https://pan.baidu.com/s/18t_ta0WWX_f1KCKXfgj_Zw 提取码:gx3r 1.2 安装JRE 由于...

    JNA方式调用dll报错:A fatal error has been detected by the Java Runtime Environment:

    标题中的“JNA方式调用dll报错:A fatal error has been detected by the Java Runtime Environment:”是一个典型的Java编程问题,涉及到Java Native Access (JNA) 和动态链接库(dll)的交互。JNA是Java平台的一个...

    64位的Java Runtime Environment

    Java Runtime Environment(JRE)是Java程序运行所需的基础软件组件,它包含了Java虚拟机(JVM)、类库以及其他支持Java应用程序执行的组件。64位的Java Runtime Environment是为了在64位操作系统上运行Java程序而...

    Java Runtime Environment (JRE) 5.0 Update 21

    Installation notes for the J2SE Runtime Environment 5.0 (JRE), including system requirements and installation instructions, are available for the following platforms. Platform 32-bit Installation 64...

    Java Runtime Environment 8u201 - jre8 64位

    Java Runtime Environment(JRE)是Java程序运行所需的基础组件,它包含了Java虚拟机(JVM)、类库以及其他支持Java应用程序执行的必要组件。标题提到的"Java Runtime Environment 8u201"是指Java 8的第201次更新,...

    A Race-Aware Java Runtime

    毕业时的外文翻译原文 A Race-Aware Java Runtime

    Java Runtime Environment-6.0.450.rar

    Java Runtime Environment(JRE)是Java程序运行所必需的基础组件,它包含了Java虚拟机(JVM)、类库以及Java程序运行所需的各种服务。在本例中,我们关注的是版本6.0.450,这是一个相对早期的版本,但它仍然在许多...

    Java Runtime Environment-6.0.200.2.exe

    Java Runtime Environment-6.0.200.2.exe JRE为JavaRunTimeEnvirment的简称,JavaRuntimeEnvironment(包括JavaPlug-in)是Sun的产品,包括两部分:JavaRuntimeEnvironment和JavaPlug-inJavaRuntimeEnvironment(JRE...

    Java SE程序 Runtime类

    Java SE程序 Runtime类Java SE程序 Runtime类Java SE程序 Runtime类Java SE程序 Runtime类Java SE程序 Runtime类Java SE程序 Runtime类Java SE程序 Runtime类Java SE程序 Runtime类Java SE程序 Runtime类Java SE程序...

    java runtime environmentjre-8u192-windows-x64.rar

    Java Runtime Environment(JRE)是Java程序运行所需的基础组件,它是Oracle公司提供的Java平台标准版(Java SE)的一部分。JRE使得用户可以在个人电脑上执行Java应用程序,它包含了Java虚拟机(JVM)、Java核心类库...

Global site tag (gtag.js) - Google Analytics