ShutdownHook介绍在java程序中,很容易在进程结束时添加一个钩子,即ShutdownHook。通常在程序启动时加入以下代码即可有了ShutdownHook我们可以。spring中在application context被load时会注册一个ShutdownHook。这个ShutdownHook会在进程退出前执行销毁bean,发出ContextClosedEvent等动作。ShutdownHook原理ShutdownHook的数据结构与执行顺序。这样覆盖了代码中主动结束进程和被kill杀死进程的场景。而且每次信号的捕获是在不同的线程中,所以他们之间的执行是异步的。java中有两类线程,用户线程和守护线程,守护线程是服务于用户线程,如GC线程,JVM判断是否结束的标志就是是否还有用户线程在工作。当最后一个用户线程结束时,就会调用 Shutdown.shutdown。这是JVM这类虚拟机语言特有的"权利",倘若是golang这类编译成可执行的二进制文件时,当全部用户线程结束时是不会执行ShutdownHook的。
暂无评论