我正在创建一个模拟系统,它包含一个使用ProcessBuilder创建多个进程的测试工具。我希望能够将多个命令发送到单独的进程,我只考虑了几个选项 - 这些选项看起来都不是很有趣。
第一种方法是使用套接字在父进程和子进程之间进行通信,这是子进程相互通信的方式。另一种方法是使用Writer方法,我一直在使用Reader方法从每个进程读取和打印输入流。我认为这两者都需要类似的簿记水平。理想情况下,调用类似于任何子类的函数会很好,但我知道这不是多进程的工作方式。
请告诉我您认为实施此操作的最佳方法是什么!
谢谢, 大卫
更新:我最终在测试工具中创建了一个与所有子进程通信的服务器套接字。系统设置完成后,就像向队列添加消息一样简单,然后将消息发送到正确的客户端。
答案 0 :(得分:2)
这个答案是对你的陈述的回应:
“理想情况下,调用类似于任何函数的函数会更好 子类,但我知道这不是多进程的工作方式。“
如果您愿意,以下是如何实际执行此操作,如果子流程是在JVM上运行的Java程序:
使用Remote Method Invocation。 wikipedia article有一个RMI服务器和客户端的小例子。
实质上,这可以通过以下方式工作:
这似乎是一个'官方'Hello World示例: http://docs.oracle.com/javase/1.5.0/docs/guide/rmi/hello/hello-world.html
呼叫的参数必须是Serializable
(以便它们可以通过网络传输)。通常,这应该像将implements Serializable
附加到其类型定义一样简单。