2

我正在创建一个模拟系统,该系统由一个使用 ProcessBuilder 创建多个流程的测试工具组成。我希望能够向单独的进程发送多个命令,而且我只想到了几个选项——这两个选项看起来都不是很有趣。

第一种方法是使用套接字在父进程和子进程之间进行通信,这是子进程相互通信的方式。另一种是使用 Writer 方法,我一直在使用 Reader 方法来读取和打印每个进程的输入流。我认为这两者都需要类似的簿记水平。理想情况下,像调用任何子类一样调用函数会很好,但我知道这不是多进程的工作方式。

请让我知道您认为实现此功能的最佳方法是什么!

谢谢,大卫

更新:我最终在与所有子进程通信的测试工具中创建了一个服务器套接字。系统设置好后,只需将消息添加到队列中,然后将其发送到正确的客户端即可。

4

1 回答 1

2

这个答案是对您的陈述的回应:

“理想情况下,像调用任何子类一样调用函数会很好,但我知道这不是多进程的工作方式。”

如果您愿意,如果子进程是在 JVM 上运行的 Java 程序,那么您可以这样做:

使用远程方法调用。维基百科文章有一个 RMI 服务器和客户端的小例子。

本质上,这通过以下方式起作用:

  1. 服务器通过远程方法提供一些服务,通过实现“远程接口”(其定义也应该在客户端可用)
  2. 当服务器启动时,它会创建一个实现服务的对象实例,并将其“绑定”到“RMI 注册表”
  3. 客户端在“RMI Registry”中查找它想要调用方法的远程对象,并获得一个似乎实现远程接口的对象。
  4. 然后客户端可以调用此对象的方法,RMI 运行时确保调用到达远程对象,并返回结果。

这似乎是一个“官方”的 Hello World 示例: http ://docs.oracle.com/javase/1.5.0/docs/guide/rmi/hello/hello-world.html

调用的参数必须是Serializable(以便它们可以通过网络传输)。通常,这应该像附加implements Serializable到它们的类型定义一样简单。

于 2012-05-07T17:18:45.377 回答