2010-09-18 4 views
6

Сегодня мне задали этот вопрос об обмене данными из потока t1, который работает в одном jvm 1, в поток 2, запущенный в другом jvm 2, и аналогично другому потоку t3 в jvm 3. после некоторой домашней работы i сказал следующий ответ. Скажите мне, если у вас есть лучший и эффективный ответ.Обмен данными между JVM

  1. Сериализация
  2. Java NiO поток
-------------             ----------------- 
jvm 1     PASS THE DATA TO ANOTHER THREAD IN A   JVM2 

         NOTHER JVM 
         ===============>>>>> 
tHREAD T1               tHREAD T2 
--------------             ------------------- 

ответ

11

Я думаю, это зависит от контекста приложения. У вас есть несколько вариантов:

  • Сериализация может работать, но, скорее всего, сломается, если ваш код изменится. Это может привести к потере данных.
  • Для обмена данными между несколькими приложениями вы можете использовать базу данных. Это один из лучших вариантов в моем сознании, поскольку ваши данные будут структурированы.
  • Кроме того, вы можете использовать форматированный текстовый файл. Просто выберите способ форматирования данных, поместите их в файл и затем прочитайте файл из другого приложения.
  • Если ваша JVM находится на разных компьютерах, вы можете попробовать использовать сокеты. Таким образом, ваши приложения смогут общаться через сеть.
  • Если у вас есть сервер, действующий как реле для ваших объектов, вы также можете использовать сервер обмена сообщениями (я думаю о JMS).
+0

благодарит vivien за ответ –

Смежные вопросы