Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Совместное использование памяти двумя приложениями, Как это сделать? 
V
    Опции темы
Prol
Дата 16.1.2008, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 11.1.2008
Где: Кыев, Украина

Репутация: нет
Всего: нет



Я вот чё подумал... 
Может быть я недооцениваю потоки в Java?

Например пусть в одном приложении у меня есть поток Keeper и поток Utilizateur, и в одном из них произошёл непоправивый сбой, то JVM мне остановит только поток-виновник сбоя или прибъёт всё приложение?

Добавлено через 2 минуты и 51 секунду
Цитата(fixxer @ 16.1.2008,  14:55)
Непонятно, чем здесь помешает RMI?

Предстаьте себе, что вы меняете значения трёх миллионов объектов не напрямую, а используя сериализацию/десериализацию (RMI) :о) Насколько это будет медленнее?
PM MAIL WWW ICQ   Вверх
LSD
Дата 16.1.2008, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Prol @  16.1.2008,  15:00 Найти цитируемый пост)
Например пусть в одном приложении у меня есть поток Keeper и поток Utilizateur, и в одном из них произошёл непоправивый сбой, то JVM мне остановит только поток-виновник сбоя или прибъёт всё приложение?

Только поток вызвывший сбой. Плюс ты можешь зарегистрировать своего обработчика на это событие.

Добавлено через 5 минут и 16 секунд
Цитата(Prol @  16.1.2008,  14:42 Найти цитируемый пост)
Извините, но RMI и JMX не подходит, потому что сериализует/десереализует объекты между приложениями.

Внутри одной JVM можно использовать статические поля/методы.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Prol
Дата 16.1.2008, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 11.1.2008
Где: Кыев, Украина

Репутация: нет
Всего: нет



Цитата(LSD @ 16.1.2008,  15:06)
Цитата(Prol @  16.1.2008,  15:00 Найти цитируемый пост)
Например пусть в одном приложении у меня есть поток Keeper и поток Utilizateur, и в одном из них произошёл непоправивый сбой, то JVM мне остановит только поток-виновник сбоя или прибъёт всё приложение?

Только поток вызвывший сбой. Плюс ты можешь зарегистрировать своего обработчика на это событие.

Тогда это выход.

Если сбой в одном потоке не вызывает снятия всего приложения исполняющей JVM, то я нашёл ответ на свой вопрос.

Всем участникам спасибо за возню со мной, косноязычным :о)
Теперь бы ещё понять, как отловить переполнение.... Но для этого я открыл другую тему.

Ещё раз спасибо, ребята :о)
PM MAIL WWW ICQ   Вверх
batigoal
Дата 16.1.2008, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(Prol @  16.1.2008,  16:21 Найти цитируемый пост)
Если сбой в одном потоке не вызывает снятия всего приложения исполняющей JVM, то я нашёл ответ на свой вопрос.

Если сбой произошел по вине данных, то они успешно положат и второй поток.
Если же, допустим, засбоит JVM, то приложение также умрёт. Поэтому я не понимаю смысл подобной избыточности - она не даёт особых прибылей.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Prol
Дата 16.1.2008, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 11.1.2008
Где: Кыев, Украина

Репутация: нет
Всего: нет



Цитата(batigoal @ 16.1.2008,  16:00)
Если сбой произошел по вине данных, то они успешно положат и второй поток.
Если же, допустим, засбоит JVM, то приложение также умрёт. Поэтому я не понимаю смысл подобной избыточности - она не даёт особых прибылей.

Данные не могут положить поток. Поток может положить неправильный метод.

Не положат они второй поток, потому что второй поток не делает с ними те же операции что и первый :о)

Прибыль получается, что в случае сбоя второго потока, нам нужно его перезапустить на уже готовые, существующие объекты. А в случае однопоточного приложения нам придётся переиничивать все объекты, а это занимает бешеное время, в моём приложении 15 минут.


PM MAIL WWW ICQ   Вверх
COVD
Дата 16.1.2008, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

Если сбой в одном потоке не вызывает снятия всего приложения исполняющей JVM, то я нашёл ответ на свой вопрос.


 smile 

PM MAIL   Вверх
LSD
Дата 16.1.2008, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Prol @  16.1.2008,  16:04 Найти цитируемый пост)
Поток может положить неправильный метод.

А что помешает ему после перезапуска, на тех же самых данных снова лечь? smile 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Prol
Дата 16.1.2008, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 11.1.2008
Где: Кыев, Украина

Репутация: нет
Всего: нет



Цитата(LSD @ 16.1.2008,  17:19)
Цитата(Prol @  16.1.2008,  16:04 Найти цитируемый пост)
Поток может положить неправильный метод.

А что помешает ему после перезапуска, на тех же самых данных снова лечь? smile

А он ведь не с того же места начнёт выполнение, а значит вызовет другой метод или тот же метод с другим объектом, так что может вообще повторной ошибки не произойти :о)))

Грубо говоря, вот у нас любое  оконное приложение состоит из трёх потоков.
1. UI
2. Внутренняя логика
3. Ввод-вывод всякий, кроме UI.

В таком приложении нужно просто добавить поток Keeper, который всегда будет работать, ничего не делая, кроме ожидания остановки одного из первых трёх потоков по ошибке. В случае остановки одного из указанных потоков, Keeper его перезапускает. При этом данные приложения сохранятся. :о)
PM MAIL WWW ICQ   Вверх
batigoal
Дата 16.1.2008, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(Prol @  16.1.2008,  17:04 Найти цитируемый пост)
Поток может положить неправильный метод.

что значит - неправильный метод?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Prol
Дата 16.1.2008, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 11.1.2008
Где: Кыев, Украина

Репутация: нет
Всего: нет



Цитата(batigoal @ 16.1.2008,  17:43)
Цитата(Prol @  16.1.2008,  17:04 Найти цитируемый пост)
Поток может положить неправильный метод.

что значит - неправильный метод?

неправильный метод, это такой метод, который делает не то, что написано в спецификации этого метода, например закоден с ошибкой в алгоритме, или кодер ошибся с приоритетом операций и скобки не там стоят... 
PM MAIL WWW ICQ   Вверх
batigoal
Дата 16.1.2008, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(Prol @  16.1.2008,  18:49 Найти цитируемый пост)
неправильный метод, это такой метод, который делает не то, что написано в спецификации этого метода, например закоден с ошибкой в алгоритме, или кодер ошибся с приоритетом операций и скобки не там стоят...  

Так его надо переписывать, значит, а не в двух потоках запускать. А если у тебя есть два неправильных метода, и они выполнятся в двух потоках с интервалом, допустим, в три минуты?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
serger
Дата 16.1.2008, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 1
Всего: 5



to Prol, Вы какие ошибки имеите в виду? Какие данные? В двух словах, какой алгоритм?

Просто опять грубо: Возникает у Вас ошибка деления на 0 в алгоритме, алгоритм завершается, как-либо? Ну допустим вылетает. Данные сохранились. И опять так же обрабатываются. Алгоритм опять вылетает.. Что дальше?!

ps. Горе от ума?!  smile 


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
Prol
Дата 16.1.2008, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 11.1.2008
Где: Кыев, Украина

Репутация: нет
Всего: нет



Цитата(batigoal @ 16.1.2008,  17:54)
Цитата(Prol @  16.1.2008,  18:49 Найти цитируемый пост)
неправильный метод, это такой метод, который делает не то, что написано в спецификации этого метода, например закоден с ошибкой в алгоритме, или кодер ошибся с приоритетом операций и скобки не там стоят...  

Так его надо переписывать, значит, а не в двух потоках запускать. А если у тебя есть два неправильных метода, и они выполнятся в двух потоках с интервалом, допустим, в три минуты?

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

Добавлено через 3 минуты и 54 секунды
Цитата(serger @ 16.1.2008,  18:07)
Просто опять грубо: Возникает у Вас ошибка деления на 0 в алгоритме, алгоритм завершается, как-либо? Ну допустим вылетает. Данные сохранились. И опять так же обрабатываются. Алгоритм опять вылетает.. Что дальше?!

ps. Горе от ума?!  smile

Ну ето не самая частая ошибка, в прошлом году три раза вылетала. Ничего страшного, перезапустился тут-же, а там другие проверки не пропустили до этого места, а потом корку копал, искал откуда он проскочил, етот делений на ноль.
PM MAIL WWW ICQ   Вверх
serger
Дата 16.1.2008, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 1
Всего: 5



Печально, но ничего не понял, кроме того, что лучше бы таких ошибок не возникало.
Ну это и так понятно.

Ну возникла идея. А почему бы тогда всё-таки данные и обработчик вообще разъединить?
Чтобы перезапускать надо было только обработчик, если он сбоит?


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
Prol
Дата 16.1.2008, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 11.1.2008
Где: Кыев, Украина

Репутация: нет
Всего: нет



Цитата(serger @ 16.1.2008,  18:19)
Печально, но ничего не понял, кроме того, что лучше бы таких ошибок не возникало.
Ну это и так понятно.

Ну возникла идея. А почему бы тогда всё-таки данные и обработчик вообще разъединить?
Чтобы перезапускать надо было только обработчик, если он сбоит?

Так я так и делаю сейчас. У меня Кипер и Утилизатор два разных приложения в контексте ОС. Кипер хранит данные и работает ну вот последний аптайм 170 суток. А Утилизатор с этими данными работает аптайм уже две недели со времени последнего перезапуска.
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0629 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.