Runtime.getRuntime().addShutdownHook 使用实例

今天看 14年 某个前辈留下的关于 JedisPool 的代码中用到了这个东西,但是不知道是干啥的,就查了一下


Runtime.addShutdownHook解释

如果你想在jvm关闭的时候进行内存清理、对象销毁等操作,或者仅仅想起个线程然后这个线程不会退出,你可以使用Runtime.addShutdownHook。

这个方法的作用就是在JVM中增加一个关闭的钩子

当程序正常退出、系统调用 System.exit方法或者虚拟机被关闭时才会执行系统中已经设置的所有钩子,当系统执行完这些钩子后,JVM才会关闭。

所谓钩子,就是一个已初始化但并不启动的线程。JVM退出通常通过两种事件。

  • 程序正常退出,例如最后一个非守护进程退出、使用System.exit()退出等
  • 程序异常退出,例如使用Ctrl+C触发的中断、用户退出或系统关闭等系统事件等 该方法的说明如下

Runtime.addShutdownHook示例

public class ShutdownHookDemo {
    public static void main(String[] args) {
        Thread clearHook = new Thread() {
            public void run() {
                System.out.println("Run clearHook...");
            }
        };
        Runtime.getRuntime().addShutdownHook(clearHook);
        Runnable task1 = new Runnable() {
            public void run() {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("Run task1...");
            }
        };
        Runnable task2 = new Thread() {
            public void run() {
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("Run task2...");
            }
        };
        task1.run();
        task2.run();
    }
}
Run task1...
Run task2...
Run clearHook...

参考资料:

1、Java中Runtime.addShutdownHook用法
http://blog.jerkybible.com/2016/10/17/Java%E4%B8%ADRuntime-addShutdownHook%E7%94%A8%E6%B3%95/

2、Runtime.getRuntime().addShutdownHook简介
https://www.jianshu.com/p/5e6dffd1776f

3、RunTime.getRunTime().addShutdownHook用法
https://blog.csdn.net/wgw335363240/article/details/5854402


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值