在前面的章节我们已经详细介绍了多进程的用途及多进程的启动关闭。这个章节是多进程的一个核心章节,主要是介绍多进程的通信。一个大型的平台或者一个大型的系统往往具备一个多个进程,但是有些进程未必是在启动时候就有一定的任务,有时候它会空闲下来,在主进程没有下放任务的时候,子进程会空闲等待。但是在主进程有工作任务的时候,子进程必须要启动,完成相关的操作。
还有在子进程完成任务时候也要告知主进程相关的工作情况,让主进程继续安排下一个部分的工作。
多进程的子进程的操作主要是通过process的io流来完成,首先子进程必须有接收和分析io流的能力。
我们首先来看一个例子:
package com.shine.MultiProcess;
public class CommunicationExample {
/**
* @param args
*/
public static void main(String[] args) {
MultiProcessManager.getManager().setJvmPath(
"C:\\Program Files\\Java\\jre6\\bin\\java");
MultiProcessManager.getManager().addProcessByJar("test",
"F:\\下载\\test.jar");
MultiProcessManager.getManager().startProcess("test");
MultiProcessManager.getManager().operaProcess("test", "test1");
MultiProcessManager.getManager().operaProcess("test", "test2");
}
}
在启动test进程的时候,我们对test的jar连续执行了2个命令,分别是test1和test2。
子进程的源代码:
package com.shine.MultiProcess;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class ProcessTest {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
System.out.println("process start");
BufferedReader bfr = new BufferedReader(
new InputStreamReader(System.in));
while (true) {
String line = bfr.readLine();
if (line != null) {
System.out.println("order:" + line);
} else {
return;
}
}
}
}
子进程通过io来接收信息,然后打印出来。
显示结果如下:
process start
order:test1
order:test2