背景:java 支持多线程,这是绝大多数程序都满足的必要条件,因为多线程个可以增加程序的“吞吐量”,提高用户对软件的流畅性体验。
同时,java程序也支持开启新的进程,或者叫做java调用外部应用程序。这里的实现方式java提供了两个类:Process、RunTime。
这些类之间的关系:
1.通过ProcessBuilder 构建 Process 实例。
2.通过RunTime构建Process实例。
代码如下:
//外部程序命令,这里是shell 脚本
String cmds[] = {"/bin/bash","-c","chmod -R 766 /opt/game_plugin/*"};
//Process process1= Runtime.getRuntime().exec(cmds);
ProcessBuilder builder = new ProcessBuilder(cmds);
Process process = builder.start();
while(process.isAlive()) {//判断进程是否还存活
Thread.sleep(1000);
}
System.out.println("进程退出值:"+process.exitValue());
说明:
1.在java 基本类库中用单词“Process” 标识“进程”。即,现实世界的“进程”在java 中定义为Process类,就像“颜色”为Color类。【java类,是现实世界里的事物在java 世界里找的对应事物】
2.由于创建的Process 实例没有终端或控制台,要与进程进行交互需要Process 提供的三种流:getInputStream,getOutPutSteam,getErrorStream。当然,Process还提供了其他与进程有关的方法。
3.“-c”,上面代码java 调用的是liunx 下的shell 命令。-c 的意义是命令“/bin/bash” 的“选项 ” 是“chmod -R 766 /opt/game_plugin/*”