Shutdown Hook中不能执行一些可能会阻塞的操作,否则会导致Java虚拟机无法正常退出。 Shutdown Hook中不能启动新的线程,否则可能会导致JVM无法正常关闭。如果需要在Shutdown Hook中执行耗时的操作,可以考虑使用Executor框架来管理线程。 Shutdown Hook中应该尽量避免抛出异常,否则可能会导致Java虚拟机无法正常退出。 Shutdow...
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class Main {private static Connection conn;public static void main(String[] args) {// 初始化数据库连接initConnection();// 注册Shutdown HookRuntime.getRuntime().addShutdownHook(new Thread() {public void ...
AI代码解释 publicstaticvoidmain(String[]args){Thread thread=newThread(()->System.out.println("Do something1 in Shutdown Hook"),"dahai1");Runtime.getRuntime().addShutdownHook(thread);Runtime.getRuntime().addShutdownHook(newThread(()->System.out.println("Do something2 in Shutdown Hook2"...
publicclassExampleShutdownHook{publicstaticvoidmain(String[]args){Runtime.getRuntime().addShutdownHook(newThread(()->{System.out.println("JVM is shutting down. Cleaning up resources...");// 在这里编写释放资源的代码}));// 在这里编写应用程序的代码}} 在这个例子中,我们创建了一个匿名线程,并...
先看一下看源码RunTime#addShutdownHook方法与解释。 1.1 方法解释 核心意思,在Java虚拟机在关闭时会触发一些自己添加的事件。 Registers a new virtual-machine shutdown hook. The Java virtual machine shuts down in response to two kinds of events: ...
Shutdown Hook机制在开源框架中的使用 1. Spring 2.Tomcat Shutdown Hook 机制的原理 Java 的 Shutdown Hook 机制依赖于 Java 虚拟机(JVM)中的两个线程:主线程和Shutdown 线程。 当Java 应用程序启动时,主线程会创建一个 Shutdown 线程,并将所有注册的 Shutdown Hooks 添加到 Shutdown 线程的 Hook 列表中。
addShutdownHook Java程序中可以通过添加关闭钩子,实现在程序退出时关闭资源、平滑退出的功能。 同理关闭钩子是removeShutdownHook 使用Runtime.addShutdownHook(Thread hook)方法,可以注册一个JVM关闭的钩子,这个钩子可以在以下几种场景被调用 程序正常退出(比如main方法执行完毕) ...
在线上Java程序中经常遇到进程程挂掉,一些状态没有正确的保存下来,这时候就需要在JVM关掉的时候执行一些清理现场的代码。Java中得ShutdownHook提供了比较好的方案。 JDK在1.3之后提供了Java Runtime.addShutdownHook(Thread hook)方法,可以注册一个JVM关闭的钩子,这个钩子可以在以下几种场景被调用: ...
使用shutdownHook需要安全权限 如果我们使用Java Security Managers,则执行添加/删除shutdownHook的代码需要在运行时具有shutdownHooks权限。否则会导致SecurityException。 参考:http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Runtime.html#addShutdownHook(java.lang.Thread)"官方文档") ...
java程序运行时,有时会因为一些原因会导致程序死掉。也有些时候需要将程序对应的进程kill掉。这些情况发生时,可能会导致有些需要保存的信息没能够保存下来,还有可能我们需要进程交代一些后事再被销毁。那要怎么办呢?这就该ShutdownHook登场了。他是怎么完成我们上面描述的需要完成的事情呢?看看下面的例子吧。上面代码...