前言

最近做项目框架,需要在框架结束的时候,关闭服务器连接,清除部分框架运行lock文件,这里就想到了shutdownhook,顺便学了学Runtime的使用

1. shutdownhook

demo示例,证明在程序正常结束的时候会调用,如果kill -9 那肯定就不会调用了

public class ShutdownHookTest {public static void main(String[] args) {System.out.println("==============application start================");Runtime.getRuntime().addShutdownHook(new Thread(()->{System.out.println("--------------hook 1----------------");}));Runtime.getRuntime().addShutdownHook(new Thread(()->{System.out.println("--------------hook 2----------------");}));System.out.println("==============application end================");}
}

正常运行结束,结果如下

==============application start================
==============application end================
--------------hook 1----------------
--------------hook 2----------------Process finished with exit code 0

如果暂停,点击下图左下角的正方形红图标,停止正在运行的应用

结果如下,shutdownhook已执行。

shutdownhook可以处理程序正常结束的时候,删除文件,关闭连接等

2. exec执行

2.1 常规命令执行

demo示例如下,比如ls

public class ShutdownHookTest {public static void main(String[] args) throws InterruptedException, IOException {Process process = Runtime.getRuntime().exec("ls");try (InputStream fis = process.getInputStream();InputStreamReader isr = new InputStreamReader(fis);BufferedReader br = new BufferedReader(isr)) {String line;while ((line = br.readLine()) != null) {System.out.println(line);}}}
}

结果如下

而正常执行结果

但是这个方法有远程执行风险,即在浏览器端通过这个方法执行特定指令,比如执行rm -rf *,结果就很……

2.2 管道符

但是遇见管道符之后就会失效,什么办法解决,sh -c,但是不能直接用,否则获取到的是TTY窗口信息

    public static void main(String[] args) throws IOException {Process process = Runtime.getRuntime().exec("sh -c ps aux|grep java");try (InputStream fis = process.getInputStream();InputStreamReader isr = new InputStreamReader(fis);BufferedReader br = new BufferedReader(isr)) {String line;while ((line = br.readLine()) != null) {System.out.println(line);}}}

结果

Java Runtime的使用相关推荐

  1. 电脑版java运行条件,Java Runtime Environment电脑版-Java Runtime Environment(Java运行环境)8.0.221 x64正式版-蜻蜓手游网...

    很多时候我们运行一些软件都提示需要装Java环境,比如本站的<apk傻瓜式改包工具>,也是需要jdk环境才能正常使用的,但是现在官网需要注册账户才能下载,非常的麻烦,今天小编就为大家带来最 ...

  2. JDBC 此驱动程序不支持 Java Runtime Environment (JRE) 1.6 版

    错误描述:此驱动程序不支持 Java Runtime Environment (JRE) 1.6 版.请使用支持 JDBC 4.0 的 sqljdbc4.jar 类库. 微软描述:http://msd ...

  3. A Java Runtime Environment (JRE) or Java Development Kit (JDK)

    启动eclipse遇到的问题: A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be available in ...

  4. java runtime environment 官网_Java Runtime Environment SE Development Kit

    Java 2平台标准版(J2SE)软件是当今开发和发布急需的企业级应用的首选方案.1.4版在Java的跨平台性和高安全性的基础上,增加了很多新的特性和功能,提供了更高的性能.可规划性.稳定性和服务能力 ...

  5. a java runtime envi_认识java

    一:垃圾收集机制 垃圾收集的目的在除不再使用的对象,当对象建立的时候垃圾收集期,即开始监控对象的动态情况,垃圾收集主要是对内存的释放.创建对象的时候申请一个空间 1:不再使用的内存空间回收: 2:Ja ...

  6. Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'错误的解决

    运行java.exe 出现Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'错误 以前就出现过,觉得自己环 ...

  7. This application requires Java Runtime Environment

    为什么80%的码农都做不了架构师?>>>    安装freemind后,运行时提示"This application requires Java Runtime Envir ...

  8. 报 There is insufficient memory for the Java Runtime Environment to continue. 的问题

    There is insufficient memory for the Java Runtime Environment to continue - valar-dohaeris - 博客园

  9. 安装JDK出现问题 Error opening registry key'software\Javasoft\Java Runtime Environment'

    第一次安装JDK测试是否安装成功,打开cmd输入java -version 回车的时候出现如下错误: Error opening registry key'software\Javasoft\Java ...

  10. Linux 下报错:A Java RunTime Environment (JRE) or Java

    2019独角兽企业重金招聘Python工程师标准>>> 一.报错环境: 在Linux mint下,前几天还用得很好的的eclipse,今天开机不知为什么这样. Eclipse 3.6 ...

最新文章

  1. php程序应用实例,PHP教程.应用实例1_php
  2. PHP 一键安装扩展的程序-(Windows 系统)
  3. 多线程与高并发(四):LockSupport,高频面试题,AQS源码,以及源码阅读方法论
  4. 【开源项目】特斯拉+树莓派实现车牌识别检测系统
  5. lightgbm 数据不平衡_不平衡数据下的机器学习(下)
  6. LeetCode 755. 倒水(模拟)
  7. 接口测试很难吗?教你用Postman实用代码实现时间戳加密
  8. MySQL索引类型及创建
  9. WPF备忘录(7)WPF图片资源路径介绍
  10. zkeposx消费管理系统mysql_ZKEposx消费管理系统
  11. python模拟手机app签到_Python实现云之家自动签到
  12. CE教程:植物大战僵尸(单卡片无CD)
  13. 如何记录流水账,打开图表查看账目
  14. VGG16网络结构与代码
  15. UML---构件图和部署图
  16. 搜pos不为了收单而收单,互联网是个神奇的动物
  17. 欣赏的心态去发现生活中的美
  18. Hi3519V101 Linux开发环境
  19. 揭秘如何搭建梦幻西游社交框架
  20. 嵌入式系统开发笔记89:认识AVR微控制器系统架构

热门文章

  1. java并发编程笔记3-同步容器并发容器闭锁栅栏信号量
  2. 翻译:5分钟介绍AI人工智能,机器学习和深度学习
  3. 123 张图详解 177 个计算机网络名词
  4. 攻防世界题目练习--MISC新手关(1~6)
  5. Middleware概述
  6. numpy中argmax、argmin的用法
  7. 如何批量下载腾讯视频 annie
  8. Seata分布式事务XA与AT全面解析
  9. Android开发-优秀博客参考
  10. kali linux 爆破工具实验