java:Runtime.getRuntime().addShutdownHook 捕获代码被结束时异常

导读:本篇文章讲解 java:Runtime.getRuntime().addShutdownHook 捕获代码被结束时异常,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

问题描述:

代码有时候被杀掉,但是杀掉的时候需要去执行一些必要的操作,例如保存文件,java 提供了相应的方法 Runtime.getRuntime().addShutdownHook 。

1.贴一个例子
public class GetRunKill {
    public static void main(String[] args) {

        Runtime runtime = Runtime.getRuntime();
        runtime.addShutdownHook(new Thread("") {
            @Override
            public void run() {
                System.out.println("代码被kill");
            }
        });

        for (int i = 0; i < 100; i++) {
            System.out.println(i);
            try {
                System.out.println("******* sleep for 5 second *******");
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

    }
}

在 linux 上查询进程号,然后 kill 掉该进程,代码会调用 Runtime.getRuntime().addShutdownHook 中的 run 方法,显示为

******* sleep for 5 second *******
6
******* sleep for 5 second *******
7
******* sleep for 5 second *******
8
******* sleep for 5 second *******
9
******* sleep for 5 second *******
代码被kill

2.Tips

1.linux 服务器上杀掉进程的时候,kill ***(进程号) 可以被Runtime捕获,kill -9 是不能被捕获的。
2.Runtime.getRuntime().addShutdownHook 必须得在执行线程的前面声明,在后面声明是无效的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/16618.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!