java: 多进程简易操作

来源:互联网 发布:淘宝印度大麻种子 编辑:程序博客网 时间:2024/06/05 09:09

java用了这么久,貌似没有使用过多进程。貌似一般的需求里面也不涉及这个方面。

但是,有时候确实有这种奇怪的需求,比如xxx.

于是,通过翻阅api文档,以及参考往上博客,写了一个简单的多进程程序。

package com.pythoncat.java.process;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.Arrays;/** * Created on 2017/8/11. * from http://www.jianshu.com/p/428bbc3852a7 * @author cat */public class NewlyProcess {    public static void main(String[] args) throws IOException, InterruptedException {        createProcess("java", "-version");//        CmdToolkit.readConsole("java",true);        createProcess("git","status");    }    private static void createProcess(String... cmd) throws IOException, InterruptedException {//        ProcessBuilder pb = new ProcessBuilder("java", "-version");        ProcessBuilder pb = new ProcessBuilder(cmd);        pb.redirectErrorStream(true);        Process process = pb.start();        process.waitFor();        InputStream in = process.getInputStream();        BufferedReader br = new BufferedReader(new InputStreamReader(in));        String line;        StringBuilder sb = new StringBuilder();        sb.append("---------------------------------\n");        sb.append("commands:\t")                .append(Arrays.toString(cmd))                .append("\n");//        System.out.println(sb);        sb.append("RESULT:\t").append("\n");        while ((line = br.readLine()) != null) {            sb.append(line).append("\n");        }        sb.append("---------------------------------\n");        System.out.println(sb.toString());    }}

代码量很少,主要的代码还是用于打印输出了。输出结果如下:

---------------------------------commands:   [java, -version]RESULT: java version "1.8.0_131"Java(TM) SE Runtime Environment (build 1.8.0_131-b11)Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)------------------------------------------------------------------commands:   [git, status]RESULT: fatal: Not a git repository (or any of the parent directories): .git---------------------------------

其中关键逻辑至于3行

ProcessBuilder pb = new ProcessBuilder(cmd);pb.redirectErrorStream(true);Process process = pb.start();process.waitFor();
原创粉丝点击