publicstaticvoidmain(String[]args)throws InterruptedException{Thread thread=newThread(){@Overridepublicvoidrun(){System.out.println("等等我");}};Runtime.getRuntime().addShutdownHook(thread);System.out.println("程序
sm.checkPermission(newRuntimePermission("shutdownHooks")); } ApplicationShutdownHooks.add(hook); } 方法内部调用了ApplicationShutdownHooks#add,我们继续往下看。 2、ApplicationShutdownHooks类 2.1 添加钩子 privatestaticIdentityHashMap<Thread, Thread> hooks;staticsynchronizedvoidadd(Thread hook){if(hooks =...
1、Runtime.getRuntime#addShutdownHook是面向开发者的 ApplicationShutdownHook#add、Shutdown#add我们都不能直接使用。 2、许多中间件框架也利用addShutdownHook来实现资源回收、清理等操作 比如Spring框架中,使用了ShutdownHook注册,我们常用的@PreDestroy在Bean销毁前执行一些操作,也是借助其回调的。 七、总结 1、...
这时void java.lang.Runtime.addShutdownHook(Thread hook)就派上用场了。下面是addShutdownHook方法的原文说明(部分): Registers a new virtual-machine shutdown hook. The Java virtual machine shuts down in response to two kinds of events: The program exits normally, when the last non-daemon thread ...
1、RunTime类 先看一下看源码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: ...
getRuntime().addShutdownHook(Thread hook)方法来注册一个 JVM 的关闭钩子(Shutdown Hook)。当 ...
1、RunTime类 先看一下看源码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: ...
this.shutdownHook = new Thread() { @Override public void run() { synchronized (startupShutdownMonitor) { doClose(); } } }; Runtime.getRuntime().addShutdownHook(this.shutdownHook); } } origin: apache/incubator-dubbo /** * Register the ShutdownHook */ public void register() { if...
一.Runtime.addShutdownHook理解 在看别人的代码时,发现其中有这个方法,便顺便梳理一下。 void java.lang.Runtime.addShutdownHook(Thread hook) 该方法用来在jvm中增加一个关闭的钩子。当程序正常退出,系统调用 System.exit方法或虚拟机被关闭时才会执行添加的shutdownHook线程。其中shutdownHook是一个已初始化但并...
Runtime.getRuntime().addShutdownHook(new Thread(hookRunnable)); // 添加钩子线程 1 Runtime.getRuntime().addShutdownHook(new Thread(hookRunnable)); System.out.println("主线程即将结束执行"); } } 1. 2. 3. 4. 5. 6. 7. 8.