Java通用进程模型设计

对于Java多进程通信,恐怕用的最多的要算socket了,当然还有各种其他的协议,如rmi、共享内存等。这里不讲这三者,而是谈下Java中比较简单父子进程流传递。Java没有明确定义一些进程相关的API,在这方面的内容非常少,不像C/C++直接使用操作系统的PIPE。Java的Process进程中有3个比较特殊的流函数,通过这3个函数,我们可以设计出一个简单的IPC进程模型。

如下图所示:


为了实现子进程之间的通信,我们将父进程设计成单纯的消息中转站。父进程不用处理业务逻辑,其实现可以设计为通用版本。

具体实现算法:

父进程工程:

步骤1:读取配置文件,获取需要生成进程的信息,包括自定义的进程名称,启动参数;

步骤2:启动所有进程;

步骤3:为每个进程设置开启2个线程,也就是读写线程,读线程添加一个监听器,当有数据时,调用该监听器的方法进行数据传递;写线程有一个消息队列,从进程A读取到的数据在监听器中进行处理,确定要转发给哪个进程(如B进程),将数据写入到B进程对应的写线程队列中

步骤4:如果子进程都退出,父进程退出


子进程工程:

步骤1:启动读写线程,读线程添加监听器(onRecv),写线程添加一个阻塞队列

步骤2:进程退出之前,通知父进程;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值