java多进程_Java中创建多进程
我们常常听到的比较多是如何创建多线程,很少听到如何创建多进程,今天我们来讲解一下如何创建多进程
ProcessBuilder类
ProcessBuilder类是J2SE 1.5在Java.lang中新添加的一个新类,此类用于创建操作系统进程,它提供一种启动和管理进程(也就是应用程序)的方法。在J2SE 1.5之前,都是由Process类处来实现进程的控制管理。每个 ProcessBuilder 实例管理一个进程属性集。start() 方法利用这些属性创建一个新的 Process 实例。start() 方法可以从同一实例重复调用,以利用相同的或相关的属性创建新的子进程。
常用方法ProcessBuilder(List command)
// 利用指定的操作系统程序和参数构造一个进程生成器。
ProcessBuilder(String... command)
// 利用指定的操作系统程序和参数构造一个进程生成器。
List command()
// 返回此进程生成器的操作系统程序和参数。
ProcessBuilder command(List command)
// 设置此进程生成器的操作系统程序和参数。
ProcessBuilder command(String... command)
// 设置此进程生成器的操作系统程序和参数。
File directory()
// 返回此进程生成器的工作目录。
ProcessBuilder directory(File directory)
// 设置此进程生成器的工作目录。
Map environment()
// 返回此进程生成器环境的字符串映射视图。
boolean redirectErrorStream()
// 通知进程生成器是否合并标准错误和标准输出。
ProcessBuilder redirectErrorStream(boolean redirectErrorStream)
// 设置此进程生成器的 redirectErrorStream 属性。
Process start()
// 使用此进程生成器的属性启动一个新进程。
Process类
使用Process process = processBuilder.start();启动后,会返回一个Process类的实例代表启动的进程,该实例可用来控制进程并获得相关信息。Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法:void destroy()
// 杀掉子进程。(一般情况下,该方法并不能杀掉已经启动的进程,不用为好。)
int exitValue()
// 返回子进程的出口值。(只有启动的进程执行完成、或者由于异常退出后,exitValue()方法才会有正常的返回值,否则抛出异常。)
InputStream getErrorStream()
// 获取子进程的错误流。(如果错误输出被重定向,则不能从该流中读取错误输出。 )
InputStream getInputStream()
// 获取子进程的输入流。(可以从该流中读取进程的标准输出。 )
OutputStream getOutputStream()
// 获取子进程的输出流。(写入到该流中的数据作为进程的标准输入。)
int waitFor()
// 导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止。
示例
ProcessBuilderTest.java 类import java.io.*;
import java.util.*;
public class ProcessBuilderTest {
public static void main(String[] args) {
try {
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.redirectErrorStream(true);
processBuilder.command(new File(System.getProperty("java.home"), "bin/java").toString(), "ProcessTest");
processBuilder.redirectErrorStream(true);
processBuilder.directory(new File(ProcessBuilderTest.class.getResource("/").getPath()));
Process process = processBuilder.start();
Scanner scanner = new Scanner(process.getInputStream());
while (scanner.hasNextLine()) {
System.out.println("Process Logger : " + scanner.nextLine());
}
scanner.close();
}catch (IOException e) {
e.printStackTrace();
}
}
}
ProcessTest.java 类import java.util.Map;
public class ProcessTest {
public static void main(String[] args) {
for (Map.Entry entry : System.getProperties().entrySet()) {
System.out.println(entry.getKey() + " ==> " + entry.getValue());
}
}
}
运行结果:localhost:test meyer$ java ProcessBuilderTest
Process Logger : java.runtime.name ==> Java(TM) SE Runtime Environment
Process Logger : sun.boot.library.path ==> /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/lib
Process Logger : java.vm.version ==> 25.111-b14
Process Logger : gopherProxySet ==> false
Process Logger : java.vm.vendor ==> Oracle Corporation
Process Logger : java.vendor.url ==> http://java.oracle.com/
Process Logger : path.separator ==> :
Process Logger : java.vm.name ==> Java HotSpot(TM) 64-Bit Server VM
Process Logger : file.encoding.pkg ==> sun.io
Process Logger : user.country ==> CN
Process Logger : sun.java.launcher ==> SUN_STANDARD
Process Logger : sun.os.patch.level ==> unknown
Process Logger : java.vm.specification.name ==> Java Virtual Machine Specification
Process Logger : user.dir ==> /Users/meyer/Documents/workspace/me/test
Process Logger : java.runtime.version ==> 1.8.0_111-b14
Process Logger : java.awt.graphicsenv ==> sun.awt.CGraphicsEnvironment
Process Logger : java.endorsed.dirs ==> /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/lib/endorsed
Process Logger : os.arch ==> x86_64
Process Logger : java.io.tmpdir ==> /var/folders/3d/2_m0wvfs0yq7_tq0b4_r34rc0000gn/T/
Process Logger : line.separator ==>
Process Logger :
Process Logger : java.vm.specification.vendor ==> Oracle Corporation
Process Logger : os.name ==> Mac OS X
Process Logger : sun.jnu.encoding ==> UTF-8
Process Logger : java.library.path ==> /Users/meyer/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
Process Logger : java.specification.name ==> Java Platform API Specification
Process Logger : java.class.version ==> 52.0
Process Logger : sun.management.compiler ==> HotSpot 64-Bit Tiered Compilers
Process Logger : os.version ==> 10.12.2
Process Logger : user.home ==> /Users/meyer
Process Logger : user.timezone ==>
Process Logger : java.awt.printerjob ==> sun.lwawt.macosx.CPrinterJob
Process Logger : file.encoding ==> UTF-8
Process Logger : java.specification.version ==> 1.8
Process Logger : java.class.path ==> .
Process Logger : user.name ==> meyer
Process Logger : java.vm.specification.version ==> 1.8
Process Logger : sun.java.command ==> ProcessTest
Process Logger : java.home ==> /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre
Process Logger : sun.arch.data.model ==> 64
Process Logger : user.language ==> zh
Process Logger : java.specification.vendor ==> Oracle Corporation
Process Logger : awt.toolkit ==> sun.lwawt.macosx.LWCToolkit
Process Logger : java.vm.info ==> mixed mode
Process Logger : java.version ==> 1.8.0_111
Process Logger : java.ext.dirs ==> /Users/meyer/Library/Java/Extensions:/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/lib/ext:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
Process Logger : sun.boot.class.path ==> /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/lib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/classes
Process Logger : java.vendor ==> Oracle Corporation
Process Logger : file.separator ==> /
Process Logger : java.vendor.url.bug ==> http://bugreport.sun.com/bugreport/
Process Logger : sun.io.unicode.encoding ==> UnicodeBig
Process Logger : sun.cpu.endian ==> little
Process Logger : sun.cpu.isalist ==>
localhost:test meyer$
java多进程_Java中创建多进程相关推荐
- Java 在PPT中创建SmartArt图形、读取SmartArt图形中的文本
一.概述及环境准备 SmartArt 图形通过将文字.图形从多种不同布局.组合来表现内容和观点的逻辑关系,能够快速.有效地传达设计者的意图和信息.这种图文表达的视觉表示形式常用于PPT,Word,Ex ...
- java文件不存在就创建_Java中创建并写文件的5种方式
阅读本文前,请您先点击上面的蓝色字体,再点击"关注",这样您就可以继续免费收到最新文章了.每天都有分享.完全是免费订阅,请放心关注.注:本文转载自网络,不代表本平台立场,仅供读者参 ...
- java 获取对象方法有哪些方法有哪些方法有哪些_Java中创建String 对象的方法有哪些...
Java中创建String 对象的方法有哪些 发布时间:2020-11-25 16:45:30 来源:亿速云 阅读:71 作者:Leah 这篇文章将为大家详细讲解有关Java中创建String 对象的 ...
- java 给对象创建实例_Java中创建(实例化)对象的五种方式
Java中创建(实例化)对象的五种方式1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运用反 ...
- java 创建文件夹的方法_java中创建文件夹的方法
java中创建文件夹的方法 发布时间:2020-06-10 11:46:49 来源:亿速云 阅读:461 作者:Leah 这篇文章给大家分享的是java中创建文件夹的方法.小编觉得挺实用的,因此分享给 ...
- java中写入文件_java中创建、写入文件的5种方式
在java中有很多的方法可以创建文件写文件,你是否真的认真的总结过?下面笔者就帮大家总结一下java中创建文件的五种方法. Files.newBufferedWriter(Java 8) Files. ...
- java在linux创建文件_Java中创建并写文件的5种方式
导读 在java中有很多的方法可以创建文件写文件,你是否真的认真的总结过?下面笔者就帮大家总结一下java中创建文件的五种方法. 在java中有很多的方法可以创建文件写文件,你是否真的认真的总结过?下 ...
- java 怎么创建窗体_java中创建窗体的方法
java中创建窗体的方法 发布时间:2020-06-16 11:26:04 来源:亿速云 阅读:102 作者:Leah 这篇文章给大家分享的是有关java中创建窗体的方法,小编觉得挺实用的,因此分享给 ...
- java中创建两种线程的方式_java中创建线程的两种方式有什么区别?
*** 一.创建线程 1.继承Thread类 定义类继承Thread, 重写run()方法, 将线程中要执行的代码写在run()方法中 创建该类对象, 调用start()方法就可以开启一条新线程, 新 ...
最新文章
- 神策数据:游戏企业如何做产品 A/B 测试?三大案例一次搞懂
- Mysql的coalesce
- 游戏类型区分(做游戏的朋友可以看看)
- 前端学习(1534):服务器和客户端传输
- 零基础学python看什么书好?
- 万物互联时代 如何用好智能家居这把双刃剑?
- 通达OA - 数据备份与恢复指南
- 万能地图下载器下载与安装教程
- Unity设置为中文
- 全国计算机城市排名,这五大城市教育资源全国领先,各城市优质高校排行榜一定要收藏!...
- 品牌连锁店5G/4G无线组网方案
- Error while bringing up minion for multi-master.
- hin2vec 异质信息网络表示学习 个人笔记
- Unity真实榴弹炮模拟(真正的大型榴弹炮实现)
- java计算机毕业设计新能源汽车租赁管理系统源程序+mysql+系统+lw文档+远程调试
- LCA——JD 3055 Nearest Common Ancestors
- nexus-基本使用
- Vue3 下拉刷新 的实现
- show warnings 查看警告
- 斗地主练习(按照斗地主的规则,完成洗牌发牌的动作。)