Java 进程的创建方法

Java 进程的创建方法

在 JDK 中,与进程有直接关系的类为 Java.lang.Process,它是一个抽象类。在 JDK 中也提供了一个实现该抽象类的 ProcessImpl 类,若是用户建立了一个进程,那么确定会伴随着一个新的 ProcessImpl 实例。同时和进程建立密切相关的还有 ProcessBuilder,它是在 JDK1.5 中才开始出现的,相对于 Process 类来讲,提供了便捷的配置新建进程的环境,目录以及是否合并错误流和输出流的方式。ui

Java.lang.Runtime.exec 方法和 Java.lang.ProcessBuilder.start 方法均可以建立一个本地的进程,而后返回表明这个进程的 Java.lang.Process 引用。spa

Runtime.exec 方法创建一个本地进程

该方法在 JDK1.5 中,能够接受 6 种不一样形式的参数传入。命令行

 Process exec(String command) 
 Process exec(String [] cmdarray) 
 Process exec(String [] cmdarrag, String [] envp) 
 Process exec(String [] cmdarrag, String [] envp, File dir) 
 Process exec(String cmd, String [] envp) 
 Process exec(String command, String [] envp, File dir)

他们主要的不一样在于传入命令参数的形式,提供的环境变量以及定义执行目录。code

ProcessBuilder.start 方法来创建一个本地的进程

若是但愿在新建立的进程中使用当前的目录和环境变量,则不须要任何配置,直接将命令行和参数传入 ProcessBuilder 中,而后调用 start 方法,就能够得到进程的引用。orm

 Process p = new ProcessBuilder("command", "param").start();

也能够先配置环境变量和工做目录,而后建立进程。进程

 ProcessBuilder pb = new ProcessBuilder("command", "param1", "param2"); 
 Map<String, String> env = pb.environment(); 
 env.put("VAR", "Value"); 
 pb.directory("Dir"); 
 Process p = pb.start();

能够预先配置 ProcessBuilder 的属性是经过 ProcessBuilder 建立进程的最大优势。并且能够在后面的使用中随着须要去改变代码中 pb 变量的属性。若是后续代码修改了其属性,那么会影响到修改后用 start 方法建立的进程,对修改以前建立的进程实例没有影响。cmd

相关文章
相关标签/搜索