Java提供了一种优雅的方式供程序员来使用,这样可以保证清理代码的执行。本章将会说明如何使用一个关闭钩子(shutdown hool)来保证清理代码一定会被执行。 在Java中,虚拟机遇到两种事件的时候会关闭虚拟机: · 应用程序正常退出如System.exit方法被调用或者最后一个非守护退出。 · 用户突然强制终止虚拟机,例如键入CTRL+C或者在关闭Java程序之前从系统注销。 幸运的是,当关闭的时候,虚拟机会有以下两个步骤: 1. 虚拟机启动所有注册的关闭钩子。关闭钩子是实现在Runtime上面注册的线程。所有的关闭钩子会被同时执行直到完成。 2. 虚拟机调用所有的未被调用的finalizers
在本章中,我们对第一个步骤感兴趣,它允许虚拟机提交清理代码。一个关闭钩子是java.lang.Thread类的子类,可以如下创建一个关闭钩子: · 写一个类继承Thread类 · 提供你的实现类中的run方法。该方法是应用程序被关闭的时候要提交的代码,无论是正常退出还是非正常退出。 · 在你的应用程序中,初始化一个关闭钩子 · 在当前的Runtime上使用addShutdownHook方法来注册该关闭钩子。 你可能已经注意到,你并没有启动该线程。虚拟机在它的关闭步骤中会启动该线程。
提供了一个简单的类名为ShutdownHookDemo以及一个Thread类的子类名为ShutdownHook类。注意其run方法仅仅会打印出一些语句在控制台上,但是,你可以在其中插入任何你想要执行的语句。
Listing 16.1: Using Shutdown Hook package ex16.pyrmont.shutdownhook; public class ShutdownHookDemo {
public void start() { System.out.println("Demo"); ShutdownHook ShutdownHook = new ShutdownHook(); Runtime.getRuntime().addShutdownHook(ShutdownHook); } public static void main(String[] args) { ShutdownHookDemo demo = new ShutdownHookDemo(); demo.start(); try { System.in.read(); } catch(Exception e) { } } } class ShutdownHook extends Thread {
分享到:
相关推荐
JAVA虚拟机关闭钩子(Shutdown Hook).docx
Oracle 数据库中的shutdown命令是非常重要的命令之一,它可以帮助DBA关闭数据库,以便进行维护、升级或解决问题。但是,shutdown命令并不是一个简单的命令,它有多种方式和考虑因素,本文将详细介绍 Oracle 中 ...
在深入探讨Tomcat服务器的工作机制时,我们来到了第16章,这一章主要讨论了“关闭钩子”(Shutdown Hooks)的概念及其在Tomcat中的应用。关闭钩子是Java应用程序中的一个重要特性,它允许我们在程序退出前执行必要的...
`shutdown` 命令用于关闭或重启本地或远程计算机,并可以设置延迟时间及显示消息。其基本语法为: ```plaintext shutdown [/parameter] [option] ``` 其中 `/parameter` 表示命令参数,`option` 为可选参数,用于...
"shutdown"命令是操作系统中的一个核心功能,用于安全地关闭、重启或休眠计算机。在Windows系统中,它是一个非常实用的工具,尤其对于需要定时执行关机操作或者需要无人员值守时关闭计算机的情况。下面将详细介绍...
在Windows Vista操作系统中,`shutdown`命令被广泛用于执行诸如关闭、重启系统等操作。本文将围绕“Vista关机命令shutdown”这一核心主题,详细解析该命令的各种参数及其使用场景,帮助用户更好地理解和掌握这一强大...
“shutdown”命令是Windows操作系统中用于控制系统启动、重启、关闭等操作的内置命令。在Windows XP系统中,该命令主要通过一个名为“Shutdown.exe”的可执行文件实现,通常位于“C:\Windows\System32”目录下。通过...
例如,可以批量关闭网络中的多台计算机,节省电力资源,或者在进行系统维护时避免逐一手动操作。同时,该软件还支持命令行参数,使得集成到其他脚本或程序中变得简单,从而实现更复杂的自动化工作流程。 三、安全与...
#### 二、关闭方式(Shutdown) **1. SHUTDOWN NORMAL** 正常关闭数据库,等待所有当前事务处理完毕后,按照顺序关闭数据库。这是最安全的关闭方式,但也是耗时最长的,因为需要等待所有用户完成操作并退出。 ...
这使得用户可以快速启动和关闭该程序,同时也方便了软件的移动和分享。 此外,该软件专注于定时关机这一核心功能,没有捆绑其他无关的组件或广告,确保了用户体验的纯粹。在许多免费软件纷纷加入各种附加功能的今天...
- `/s` 参数用于关闭计算机,例如 "shutdown -s"。 - `/r` 参数用于关机后重新启动计算机,例如 "shutdown -r"。 - `/l` 参数用于注销当前用户,不适用于远程计算机。 - `/a` 参数用于取消已计划的关机操作,但...
在IT领域,"shutdown"通常指的是操作系统中的关机或关闭命令。这个命令用于安全地停止计算机的操作,确保所有运行的应用程序、系统服务和文件系统都得以正确关闭,以避免数据丢失或系统损坏。当我们遇到“shutdown...
然而,标题指出"ExecutorService.shutdown()应该是在线程执行完毕后,才会去关闭",这意味着`shutdown()`方法不会立即停止所有正在执行的任务,而是会等待这些任务完成后再关闭线程池。 `ExecutorService`提供了两...
- 如果遇到问题(如:无法正常关闭),尝试使用`shutdown abort`强制关闭数据库,然后再次启动。 3. **启动数据库至mount状态**: - 在数据库关闭后,使用`startup mount`命令启动数据库到mount状态。这一步可以...
SHUTDOWN-定时开机关机 SHUTDOWN-定时开机关机 SHUTDOWN-定时开机关机 SHUTDOWN-定时开机关机 SHUTDOWN-定时开机关机
SQL>shutdown normal 提示:数据库已经关闭 已经卸载数据库 ORACLE 例程已经关闭 SQL>startup mount 提示:ORACLE例程已经启动 Total System Global Area 118255568 bytes Fixed Size 282576 bytes Variable Size ...
标题"Application Shutdown"涉及到的是WPF应用程序关闭的处理机制,包括隐式和显式的关闭方法。在本文中,我们将深入探讨这两种方式以及如何在C#代码中实现它们。 1. **隐式Shutdown机制**: 隐式关闭通常发生在...
关闭钩子,也称为Shutdown Hooks,确保即使在非正常退出的情况下,特定的代码块仍能得到执行。本文将深入探讨JDK源码中的关闭钩子机制,以及如何在实际开发中利用这一特性。 首先,当用户尝试关闭程序,可能由于...
然而,在长时间使用后,我们往往需要让计算机在特定时间自动关机,以便节省电力或避免因忘记关闭电脑而引发的安全隐患。为此,专门的定时关机软件应运而生,比如本文将详细介绍的"ShutDown.rar"。这款软件以其多条件...
2.shutdown how=SHUT_WR(关闭写端)可以保证对等方接收到一个EOF字符(FIN段),而不管是否有其他进程已经打开了套接字(shutdown并没采用引用计数)。 而close需要等待套接字引用计数减为0时才发送FIN段。也就是说...