MultiProcess进程池的设计(三)主进程和子进程间的通信
来源:互联网 发布:淘宝 补全会员名 编辑:程序博客网 时间:2024/05/29 16:56
在前面的章节我们已经详细介绍了多进程的用途及多进程的启动关闭。这个章节是多进程的一个核心章节,主要是介绍多进程的通信。一个大型的平台或者一个大型的系统往往具备一个多个进程,但是有些进程未必是在启动时候就有一定的任务,有时候它会空闲下来,在主进程没有下放任务的时候,子进程会空闲等待。但是在主进程有工作任务的时候,子进程必须要启动,完成相关的操作。
还有在子进程完成任务时候也要告知主进程相关的工作情况,让主进程继续安排下一个部分的工作。
多进程的子进程的操作主要是通过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
- MultiProcess进程池的设计(三)主进程和子进程间的通信
- MultiProcess进程池的设计(二)Jar进程启动和关闭
- MultiProcess进程池的设计(一)概述
- 主进程与子进程的通信(handler)
- 进程池和进程之间的通信
- 进程间的通信(三)
- Linux间的进程通信;以及子进程的创建
- CreateProcess主进程与子进程管道通信的封装
- 父进程与子进程间的信号通信
- 父进程与子进程间通信的Queue问题
- Pool进程池创建大量子进程,进程间通信
- Windows的进程间通信(三)
- 进程间的通信
- 进程间的通信
- 进程间的通信
- 进程间的通信
- 进程间的通信
- 进程间的通信
- android intent
- android 动画效果,留着研究。
- 堆排序
- windows系统 Oracle 数据库连接数的修改
- WINCE6.0建立共享文件夹
- MultiProcess进程池的设计(三)主进程和子进程间的通信
- phpcms模板的使用方法
- First
- ubuntu SVN命令大全
- ubuntu 启动时 设置多个ip 修改mac 网关 。。。
- 四级之翻译备考
- _CRT_SECURE_NO_WARNINGS
- ilog opl 存取外部文件
- HDU-2063 过山车