2016-04-01 2 views
0

У меня есть рабочее приложение Java EE, которое запускает множество потоков. Я хочу перенести эти потоки с моего приложения и просто получить доступ к их данным (строки и ints).Запуск потоков Java на другом сервере/JVM

Как добиться этого, если я хочу сказать, что метод вызова на моем веб-приложении обращается к данным потоков на другом сервере/JVM?

+1

нити не могут быть перемещены. Вы можете уничтожить их только здесь и создать там. –

+0

Данные нитей изменяются, поэтому доступ к данным о потоках вызывает сомнение. Улучшите потоки программ, чтобы они помещали свои данные в какую-то очередь вывода. –

+0

@AlexeiKaigorodov Почему я не могу просто создать веб-сервис, который позволяет мне получить доступ к этим темам? –

ответ

0

получает доступ к данным нитей

В Java почти все данные в куче, которая разделена многими нитями. Очень немногие из них полностью охвачены отдельной нитью. Таким образом, сама идея перемещения потока и только «его данных» не имеет большого смысла.

И это не просто Java, практически любой язык с общим изменчивым состоянием столкнется с теми же проблемами.

Конечно, ваше приложение может иметь концепцию данных, связанных с потоком, но это будет логика приложения, а не часть самой Java или ее класса Thread.

0

Скажите, что вы хотели отделить эти слои (возможно, поместив их на разные машины или для масштабируемости), вы разделили бы слой данных с уровня презентации и разместили их в разных JVM. Вы предоставляете уровень данных для уровня представления. Как вы это делаете, это зависит от вашего предпочтительного транспорта. например это может быть веб-служба, или вы можете использовать RMI, JMS, TCP, общую память.

В любом случае одна JVM может получить доступ только к данным другого процесса через службы, предоставляемые JVM. (За исключением случаев совместной работы с памятью, но это не так просто, если эта модель не очень проста)

+0

Теперь я думаю или использую какой-то сторонний веб-сервис api. Так что мне не нужно создавать совершенно новый веб-сервис для моего приложения (оплата за серверное пространство, хранение данных и т. Д.). Есть ли что-то вроде этого там, где я мог бы сказать: www.timerserviceapi.com/webapi/setatimer/timerid=1?setseconds=230 –

+0

, тогда в моем корпоративном приложении просто удаленно получить доступ к данным таймеров –

+0

Это интересный сервис, очень простой для реализации. Возможно, что-то есть, но я сделаю это сам. Примечание: как вы гарантируете уникальность идентификаторов? Я бы использовал UUID. –

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