因为Runtime里的exec方法与这个类关联密切,所以这里对这个类进行了分析。
之前在文章《System与Runtime源码解析》里已经简单说了下这个类的用途,可以想象成一个外部应用程序的代理对象。
该类是个抽象类,目前java里只有一个实现类ProcessImpl类。
Process抽象类里大致提供以下一个抽象方法:
几个输入/输出流
waitFor方法,用来等待外部程序运行完成(是一个阻塞的方法)
destory方法,就是主动关闭外部应用程序
还有一个就是获取应用程序的返回值,简单地说,就是应用程序是否是正常终止
在ProcessImpl里就具体实现了这些方法。
首先是ProcessImpl只能被ProcessBuilder.start()这个方法进行创建。
其次几个主要的方法,已经本地化,如图:

这几个方法中,我常用的是waitFor方法,如果能够正常调用外部应用程序,那么就将阻塞,等外部程序运行完后,返回值是0;反之不能正常调用外部应用程序,将不会阻塞,直接返回值是2。
create方法是被ProcessBuilder.start()调用的,也就是创建了subprocess。
destory就是java主动去销毁这个subprocess。
目前我在使用过程当中,只能本地调用。如果想直接进行远程调用,无法正常运行。
Process与ProcessImpl类源码解析
最新推荐文章于 2026-07-01 11:27:19 发布
本文详细解析了Java中Process抽象类及其唯一实现类ProcessImpl的功能与使用方法。重点关注了如何通过ProcessBuilder启动子进程,以及如何利用waitFor方法来同步等待子进程结束并获取其返回值。同时探讨了在实际应用中遇到的本地调用限制。
开发板推荐:天空星STM32F407VET6开发板
超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印
开发板推荐:天空星STM32F407VET6开发板
超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印
812

被折叠的 条评论
为什么被折叠?



