java process

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java process是什么?一起来看看小编今天的分享吧!

在项目开发中,经常会遇到调用其它程序功能的业务需求,在java中通常有两种实现方法,包括:

Runtime runtime = Runtime.getRuntime();Process p =runtime.exec(cmd);

Process p=new ProcessBuilder(cmd).start();

在这里就需要认识一下process类,process是一个抽象的类,它包含6个抽象的方法:

abstract  voiddestroy()           杀掉子进程。abstract  intexitValue()           返回子进程的出口值。abstract  InputStreamgetErrorStream()           获取子进程的错误流。abstract  InputStreamgetInputStream()           获取子进程的输入流。abstract  OutputStreamgetOutputStream()           获取子进程的输出流。abstract  intwaitFor()           导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止。

java process

以“ping 百度网址”为例:

import java.io.IOException; public class ProcessDemo {        public static void main(String[] args) {                try {                         Process process = Runtime.getRuntime().exec("ping www.baidu.com");                         System.out.println("任务执行完毕!");              } catch (IOException e) {                                       // TODO Auto-generated catch block                                       e.printStackTrace();              }       }}

由于Process提供了WaitFor和getInputStream两个方法,这两个方法都阻塞java线程,使调用ping被挂到后台运行,程序直接打印“任务执行完毕!”,而我们想要的效果是先把ping操作执行完成后,再输出“任务执行完毕!”,可以等待脚本返回或结束后,再继续执行java程序:

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader; public class ProcessDemo {         public static void main(String[] args) {                   try {                        Process process = Runtime.getRuntime().exec("ping www.baidu.com");                        BufferedReader bufferedReader = new BufferedReader(                                  new InputStreamReader(process.getInputStream(),"gbk"));                        String line;                        while ((line = bufferedReader.readLine()) != null) {                            System.out.println(line);                        }                        System.out.println("任务执行完毕!");                     } catch (IOException e) {                        // TODO Auto-generated catch block                       e.printStackTrace();                      }           }}
import java.io.IOException; public class ProcessDemo {     public static void main(String[] args) {          try {              Process process = Runtime.getRuntime().exec("ping www.baidu.com");              process.waitFor();              System.out.println("任务执行完毕!");          } catch (IOException e) {              // TODO Auto-generated catch block              e.printStackTrace();          } catch (InterruptedException e) {                                                          // TODO Auto-generated catch block              e.printStackTrace();          }     }}

这样就完成了process的Java程序操作。