zoukankan      html  css  js  c++  java
  • java线程基础巩固---如何给你的应用程序注入钩子程序

    这次做一个比较有意思的实验,我们知道当一个程序如果抛异常了其程序肯定会挂掉,那有木有可能在程序异常退出时能执行一段咱们自己的代码,比如说服务器在异常退出时需要做一些额外的资源清理,像这种场景就正好是这里有实验的,下面开始,因为这个实验用shell命令演示会比较方便,所以建议实验是在linux、mac系统下,windows上木有这么方便。

    首先新建一个java类:

    比较简单,就是有一个死循环来模拟程序在工作,编译运行:

    咱们可以将这个程序放到后台去运行,不至于阻塞终端:

    然后此时的运行结果就都输出到了"nohup.out"这个日志文件了,可以通过如下命令去查看:

    那如果此时用kill命令将咱们这个程序给杀掉,杀掉之后咱们目前程序是没有任何处理的,如下:

    而如果是程序出现了异常那咱们的程序也就直接挂掉了,咱们来改一下程序:

    编译运行:

    接下来给程序加入一个钩子,当进程死掉之后可以执行咱们的一段逻辑,具体做法如下:

    编译运行:

     

    很显然这次当程序抛异常导致程序挂掉之后就正常执行了咱们预期的程序,这也就是钩子程序的作用,那下面再来试验一下如果用kill命令手动去杀那依然可以执行钩子程序么,先将异常给注释掉:

    再来编译运行:

    嗯~~正常被执行了,但是kill -9就不一样了,下面演示一下:

    很显然这次程序就直接挂掉了,因为kill -9属于强杀,对于这种情况咱们的钩子程序是不管用的,所以对于服务器的管理人员杀掉程序时一般是非常忌讳用kill -9的。

  • 相关阅读:
    扑克牌顺子
    数组转 二叉树 ,并且输出二叉树的右视图
    数组中逆序对(归并排序思想)
    链表数字加和
    回文数字
    数组中 只出现一次的数
    判断是否有从根节点到叶子节点的节点值之和等于 sum
    双指针求 3个数和 为0的 数
    vue项目将css,js全部打包到html文件配置
    webpack4配置优化
  • 原文地址:https://www.cnblogs.com/webor2006/p/9125251.html
Copyright © 2011-2022 走看看