如何在两个java程序之间通信?

如何在两个java程序之间通信?,java,Java,可能重复: 我有两个java程序在同一个客户端上运行,第一个程序如何将一些参数或日期传递给第二个程序?您需要一个侦听器和一个客户端 您可以使用套接字、RMI或您选择的任何其他协议来实现这一点。取决于您的需求,或者可能是合适的。假设您的意思是这些程序运行在不同的JVM中,您需要使用Java消息服务、JavaSpaces或上帝禁止的CORBA。JMS和其他JMS一样,都有开销,因为您需要一个JMS服务器,例如,但除此之外,它并没有那么可怕和强大。如果您想使用java.util.concurrent

可能重复:


我有两个java程序在同一个客户端上运行,第一个程序如何将一些参数或日期传递给第二个程序?

您需要一个侦听器和一个客户端


您可以使用套接字、RMI或您选择的任何其他协议来实现这一点。

取决于您的需求,或者可能是合适的。

假设您的意思是这些程序运行在不同的JVM中,您需要使用Java消息服务、JavaSpaces或上帝禁止的CORBA。JMS和其他JMS一样,都有开销,因为您需要一个JMS服务器,例如,但除此之外,它并没有那么可怕和强大。如果您想使用java.util.concurrent或时差(我认为),您必须让这两个程序在同一个JVM下运行。能否从另一个程序启动一个程序,使它们共享相同的JVM内存空间?

这取决于您希望如何与这两个程序通信:

  • 如果只需要进程间信号量,请在/tmp中的某个位置创建一个文件并锁定它

  • 如果您只需要进程间同步消息传递(远程过程调用),RMI应该是最简单的

  • 如果您需要异步进程间消息传递,JMS应该是最简单的

  • 如果需要进程间共享内存,请使用映射文件

  • 如果你需要以上所有的,兵马俑(http://www.terracotta.org/ )最简单的方法是:在同一台或甚至不同计算机上的不同JVM上的Java程序可以看到彼此,就好像它们是在一台机器上的一个JVM中执行的一样。将一个程序拆分为几个程序甚至不需要任何代码更改—编写一个XML配置文件就足够了


duplicated:java.util.concurrent仅用于程序内部的线程-它不支持进程间通信。