Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Java и потоки / 17 сообщений из 17, страница 1 из 1
26.02.2013, 05:16:20
    #38165742
ShadowDamballah
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java и потоки
Подскажите, как реализовать следующее и чем лучше:

- породить несколько потоков (задач), которые выполняют некую работу
- создать что-то типа менеджера/монитора, который через некоторое время будет проверять состояния потоков и если один из них умер (скажем произошла ошибка в таске), сообщал об этом, но не переставал опрашивать “выживших”
- менеджер должен иметь механизм, который терминирует все опрашиваемые таски.
...
Рейтинг: 0 / 0
26.02.2013, 09:32:16
    #38165820
DoSOfRedRiver
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java и потоки
Вам стоит взглянуть на классы ThreadGroup и ThreadPoolExecutor. Первый, например, уже содержит удобные методы для мониторинга активных потоков.
Останавливать потоки можно с помощью метода interrupt(), либо предусмотреть свой алгоритм терминирования.
Есть даже deprecated метод stop(). О том, почему его не стоит использовать, можно почитать здесь http://docs.oracle.com/javase/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html
...
Рейтинг: 0 / 0
26.02.2013, 13:11:18
    #38166249
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java и потоки
DoSOfRedRiverВам стоит взглянуть на классы ThreadGroup и ThreadPoolExecutor. Первый, например, уже содержит удобные методы для мониторинга активных потоков.
Останавливать потоки можно с помощью метода interrupt(), либо предусмотреть свой алгоритм терминирования.
Есть даже deprecated метод stop(). О том, почему его не стоит использовать, можно почитать здесь http://docs.oracle.com/javase/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html
ThreadGroup давно не рекомендован к употреблению, потоки нельзя остановить вызвав метод interrupt(), этим методом можно только выразить желание чтобы поток остановился, про метод stop() вообще зря упоминали:) Ну а так да PoolExecutor поможет ТС
...
Рейтинг: 0 / 0
26.02.2013, 18:57:43
    #38167017
DoSOfRedRiver
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java и потоки
забыл ник,

Ну, насколько я знаю, зависший поток вообще нельзя безопасно остановить.
...
Рейтинг: 0 / 0
26.02.2013, 18:59:47
    #38167019
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java и потоки
DoSOfRedRiverНу, насколько я знаю, зависший поток вообще нельзя безопасно остановить.
Чейта? Если поток бесконечным циклом занят, то да. А если он заблокирован на локе или на IO, то interrupt-ом чудесно выкидывается исключение и обрабатывается.
...
Рейтинг: 0 / 0
26.02.2013, 19:36:53
    #38167072
chabapok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java и потоки
имхо, тут больше в другом проблема. Если он выполняется где-то в дебрях нативного кода, то прибить процесс может только ос, а ОС не придумали механизма корректного прибивания процессов.
...
Рейтинг: 0 / 0
26.02.2013, 19:42:17
    #38167079
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java и потоки
chabapokимхо, тут больше в другом проблема. Если он выполняется где-то в дебрях нативного кода, то прибить процесс может только ос, а ОС не придумали механизма корректного прибивания процессов.
"процесс"-то тут при чем?
...
Рейтинг: 0 / 0
26.02.2013, 19:43:35
    #38167081
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java и потоки
ShadowDamballahПодскажите, как реализовать следующее и чем лучше:

- породить несколько потоков (задач), которые выполняют некую работу
- создать что-то типа менеджера/монитора, который через некоторое время будет проверять состояния потоков и если один из них умер (скажем произошла ошибка в таске), сообщал об этом, но не переставал опрашивать “выживших”
- менеджер должен иметь механизм, который терминирует все опрашиваемые таски.
По-моему тут как раз надо не потоками оперировать. А тасками - см. Future/Callable. И хорошо бы определится, что такое "умер" и какая именно "ошибка"? Обработка исключений в Future/Callable нормально реализована.
...
Рейтинг: 0 / 0
26.02.2013, 19:45:52
    #38167085
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java и потоки
chabapokимхо, тут больше в другом проблема. Если он выполняется где-то в дебрях нативного кода, то прибить процесс может только ос, а ОС не придумали механизма корректного прибивания процессов.
Да. У нас была ситуация когда потоки обслуживающие сокеты
впадали в коматоз и прибить их средствами java было невозможно.
Как результат - аварийный ребут JBoss-а со всеми аппликейшенами.
...
Рейтинг: 0 / 0
26.02.2013, 21:00:18
    #38167165
Йуный джавистЪ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java и потоки
имхо, тут больше в другом проблема. Если он выполняется где-то в дебрях нативного кода, то прибить процесс может только ос, а ОС не придумали механизма корректного прибивания процессов.

Вообще-то придумали - сигналы.
...
Рейтинг: 0 / 0
26.02.2013, 21:49:19
    #38167199
DoSOfRedRiver
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java и потоки
Blazkowicz,

Ну, собственно, о том и речь. Блокирование зависанием обзывать не корректно, на мой взгляд.
...
Рейтинг: 0 / 0
26.02.2013, 22:18:54
    #38167219
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java и потоки
DoSOfRedRiverНу, собственно, о том и речь. Блокирование зависанием обзывать не корректно, на мой взгляд.
Про "зависания" вы же первый и упомянули. У автора темы только про ошибки.
Взаимоблокировки и IO самые распространенные причины "зависания". Бесконечные циклы достаточно большая редкость. Вы какие-то ещё "зависания" знаете? GС паузы?
...
Рейтинг: 0 / 0
27.02.2013, 13:32:33
    #38167951
chabapok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java и потоки
автор"процесс"-то тут при чем?
Сорри, речь шла конечно о потоках.

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

авторВообще-то придумали - сигналы.
а как сигналом можно остановить поток?
...
Рейтинг: 0 / 0
27.02.2013, 14:07:30
    #38168011
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java и потоки
maytonДа. У нас была ситуация когда потоки обслуживающие сокеты
впадали в коматоз и прибить их средствами java было невозможно.
Как результат - аварийный ребут JBoss-а со всеми аппликейшенами.
Дамп стека коматоза не сохранился?
...
Рейтинг: 0 / 0
27.02.2013, 14:09:18
    #38168017
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java и потоки
chabapokНо да, хочется прибивать зависшее - юзай процессы, а не потоки. Правда они тоже бывают неприбиваемы.
Получается, что так, но и то не всегда.

Пожалуйста попродробнее про "неприбиваемые". В каких случаях бывают?
...
Рейтинг: 0 / 0
27.02.2013, 19:49:46
    #38168605
chabapok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java и потоки
иногда ты делаешь kill, а процесс висит как зомби, и прибивается только тогда, когда прибивается (или завершается) его родитель.
...
Рейтинг: 0 / 0
27.02.2013, 19:52:33
    #38168610
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java и потоки
BlazkowiczДамп стека коматоза не сохранился?
Увы нет. Да и я уже ушел с проекта.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Java и потоки / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]