Java进程调用比较简单,但这里有些细节需要注意:当我们使用

Runtime.getRuntime().exec()

这段代码时,通常情况下是没有没问题的,但某些程序的异常信息太多,如果没对异常信息处理,很容易就会造成缓冲区溢出,导致进程阻塞。笔者这里提供一个简单粗暴的方法:

public static Process runProcess(String script, String[] params, String inPath,final Boolean isOutput) {Process process = null;try {process = Runtime.getRuntime().exec(script, params, new File(inPath));final InputStream is1 = process.getInputStream();final InputStream is2 = process.getErrorStream();new Thread(() -> {try {BufferedReader in = new BufferedReader(new InputStreamReader(is2, Charset.forName("GBK")), 20480);String str;while ((str = in.readLine()) != null) {if (isOutput) {System.out.println(str);}}} catch (Exception e) {e.printStackTrace();}}).start();new Thread(() -> {try {BufferedReader in = new BufferedReader(new InputStreamReader(is1, Charset.forName("GBK")), 20480);String str;while ((str = in.readLine()) != null) {if (isOutput) {System.out.println(str);}}} catch (Exception e) {e.printStackTrace();}}).start();} catch (Exception e) {e.printStackTrace();}return process;}

值得注意的是:该方法是异步执行,如果您要同步执行,移除掉第二个

new Thread(() -> {})

即可。

Java通用进程调用相关推荐

  1. java如何添加进程_如何创建一个进程,如何进程调用进程

    java一般用线程就够了,多进程优势在于每个进程互不干扰,劣势在于太耗费内存,任何事情都不是绝对的,在编写Java程序时,有时候需要在Java程序中执行另外一个程序. 1.启动程序 Java提供了两种 ...

  2. java通用象棋游戏_在通用国际象棋界面周围模拟GraphQL包装器

    java通用象棋游戏 The Universal Chess Interface (UCI) has been around a long time and used by many chess en ...

  3. websphere java和进程管理_jvisualvm/Jconsole监控WAS(WebSphere)中间件

    1.登录was控制台https://196.168.119.18:9043/ibm/console/,找到自己的应用程序服务器---java和进程管理---进程定义--JAVA虚拟机,然后配置 通用J ...

  4. java不同进程的相互唤醒_Java线程生命周期与状态切换

    前提 最近有点懒散,没什么比较有深度的产出.刚好想重新研读一下JUC线程池的源码实现,在此之前先深入了解一下Java中的线程实现,包括线程的生命周期.状态切换以及线程的上下文切换等等.编写本文的时候, ...

  5. java通用对象_有效的Java –所有对象通用的方法

    java通用对象 所有对象共有的方法(第3章) 这是Joshua Blochs的有效Java第3章的简短摘要.我仅包含与自己相关的项目. 一般 等值合约将等价关系描述为: x.equals(null) ...

  6. java什么时候创建进程,Java创建进程

    Java创建进程 1 进程的概念 1 1.1 进程的概念 1 1.2 进程的特征 1 1.3 进程与线程区别 1 2 进程的创建 1 2.1 JAVA进程的创建 1 2.1.1 ProcessBuil ...

  7. Android中的跨进程调用技术AIDL

    什么是AIDL Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信. 为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用 ...

  8. EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是hibernate中默认的CacheProvider Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通

    EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是hibernate中默认的CacheProvider Ehcache是一种广泛使用的开源Java分布式缓存.主要面向通用缓存, ...

  9. java接口方式调用海康大华摄像机预览。

    客户有海康和大华的监控设备,没有买各类安防平台,国标方式需要预留给其他需要接入的系统,得兼容高版本chrome,询问了大华的客服人员,最后选择了该方案进行解决,记录下曲折的过程.延迟大约10秒的样子, ...

最新文章

  1. linux oracle io 查看,Linux上Oracle是否使用异步io的诊断
  2. 主窗体界面设计及功能实现
  3. boost库shared_ptr实现桥接模式
  4. Hazelcast入门指南第1部分
  5. java基础—Objcet中的equals方法重写
  6. 线上排查 | 线上Redis负载暴涨100%,业务中断,这样排查很赞!
  7. CSS颜色代码(转载)
  8. 论文插入参考文献神器——EndNote(包括EndNoteX9安装和破解)
  9. 2022-2027年中国电容器行业市场全景评估及发展战略规划报告
  10. 计算机能力参考范文,信息技术能力论文,关于关于中学计算机教学的若干相关参考文献资料-免费论文范文...
  11. html5接金币游戏源码,利用HTML5实现Canvas聚宝盆接金币游戏
  12. java网页作业提交_基于JAVA网上作业提交批改系统的设计(SQL)(含录像)
  13. 【小技巧】如何对混乱的HTML/CSS/JS代码进行格式化排版
  14. 电子书下载:CRM Fundamentals
  15. 麻省理工学院计算机研究生读几年,2020年麻省理工学院一年制硕士含金量
  16. Silverlight 教程第二部分:使用布局管理 (木野狐译)
  17. python网上下载视频,音乐
  18. 《老梁四大名著情商课》笔记- 杨修之死:越有能力越得认怂
  19. macosx输入法将英文设成默认
  20. Ubuntu 截图快捷键 gnome-screenshot 使用

热门文章

  1. 基于java下的Springboot框架实现幼儿园管理系统
  2. 四年级上计算机教案简简单单画幅画,《简简单单画幅画》教学设计
  3. 必胜客中国第3000家店在秦皇岛开业;西门子宣布加速在华发展的一系列重大举措 | 美通企业周刊...
  4. 报表开发难上手?这里有一份 Fastreport 最新中文用户指南,请查收
  5. 武汉苹果iPhone6Plus特价3980分期0首付
  6. android 歌词控件,歌词显示控件的实现上——歌词解析
  7. 运用aop做日志,实现请求方法的入参、返回结果日志统一打印,避免日志打印格式杂乱,同时减少重复代码
  8. java计算机毕业设计ssm幸福小区健身器材租赁系统krfhg(附源码、数据库)
  9. codevs 1154 能量项链
  10. 软件工程概论学习笔记(1)—— 软件