问题描述:
代码有时候被杀掉,但是杀掉的时候需要去执行一些必要的操作,例如保存文件,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