java process

作者:原创时间:2022-03-10
文档

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 对象表示的进程已经终止。


以“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程序操作。

以上就是小编今天的分享了,希望可以帮助到大家。

显示全文
deque java linux 格式化u盘 js读取文件 python 交集 object 转list object转bigdecimal java get和set方法 python中get函数用法 js set方法 mysql去重复 保留一条 rstudio使用教程 oracle coalesce python configparser模块 python strip函数 python调用dll java concat js 遍历json js json对象 js数组遍历方法 python 引用 armoury crate打不开 python skimage vue使用jquery js set去重 python的range函数用法 vue 调用子组件方法 java反射获取属性值 python中find函数的用法 getclass方法 python中strip函数的用法 js class类 mysql time类型 python中sorted函数的用法 cad的基本命令 ubuntu卸载mysql js获取随机数 opencv安装教程python python numpy教程 js获取日期 python tkinter教程