我们如何在两个不同的过程中启动同一Java类的两个实例?

时间:2018-12-13 14:17:23

标签: java multithreading object process instantiation

我创建一个POJO类。我想创建两个进程,以在另一个类中获取POJO类的两个实例。

两个进程应该相互通信。

class Message {

String message;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}



 public class Demo {

        public static void main(String[] args) {

        Demo  demo = new Demo();

        Message initiator = null;
        Message receiver = null;        

       // Here is where I am stuck up. The below line is not correct
       // as some command is expected here I believe.  

        ProcessBuilder p1 = new ProcessBuilder(initiator).start();

       // Objects initiator and receiver should be instantiated in separate
       // processes and their methods should inter communicate.
       // what am I doing wrong?
       // Is there any other way to do this?
    }

}

我尝试使用ProcessBuilder,Runtime.exec和Process语法,但都提到在创建进程时使用命令

例如:

ProcessBuilder p1 =新的ProcessBuilder(某些命令).start;

如何在两个不同的过程中实现这种实例化?

我提到了与该流程创建相关的几个线程,但是没有一个线程可以满足我的要求。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

ProcessBuilder帮助启动一个新进程。您提供的命令与您在命令行键入的命令几乎相同。如果这是一个Java应用程序,则可以使用“ java -jar mayapp.jar”之类的东西。应用启动后,它将在单独的进程中运行,因此也将在单独的JVM(如果是Java应用)中运行。如果您需要在启动后与该单独的流程进行沟通,则可以选择很多方法。

  • Java远程方法调用(RMI)
  • Java消息服务(JMS)
  • 使用Restful调用的Http

有很多使用这些技术的例子,所以看看。