在JVM之间共享数据

Dea*_*mer 7 java jvm

今天我被问到这个问题,关于从一个jvm 1中运行的线程t1到另一个jvm 2中运行的线程2的数据共享,以及类似于jvm 3中的另一个线程t3.在做了一些功课后我告诉了以下的答案.如果你有更好更有效的答案,请告诉我.

  1. SERIALIZATION
  2. java nio Stream
-------------                                                   -----------------
jvm 1                  PASS THE DATA TO ANOTHER THREAD IN A         JVM2  

                         NOTHER JVM
                         ===============>>>>>  
tHREAD T1                                                          tHREAD T2
--------------                                                  -------------------
Run Code Online (Sandbox Code Playgroud)

Viv*_*sse 11

我认为这取决于您的应用程序的上下文.您有多种选择:

  • 序列化可以工作,但如果您的代码发生变化,很可能会中断.这可能导致数据丢失.
  • 要在多个应用程序之间共享数据,可以使用数据库.这是我心目中最好的选择之一,因为您的数据将是结构化的.
  • 此外,您可以使用格式化的文本文件.只需选择如何格式化数据,将其放入文件,然后从另一个应用程序中读取文件.
  • 如果您的JVM位于不同的计算机上,则可以尝试使用套接字.这样,您的应用程序将能够通过网络进行通信.
  • 如果您的服务器可以像对象一样使用中继,那么您也可以使用消息服务器(我正在考虑使用JMS).