|
|
|
Java и потоки
|
|||
|---|---|---|---|
|
#18+
Подскажите, как реализовать следующее и чем лучше: - породить несколько потоков (задач), которые выполняют некую работу - создать что-то типа менеджера/монитора, который через некоторое время будет проверять состояния потоков и если один из них умер (скажем произошла ошибка в таске), сообщал об этом, но не переставал опрашивать “выживших” - менеджер должен иметь механизм, который терминирует все опрашиваемые таски. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2013, 05:16:20 |
|
||
|
Java и потоки
|
|||
|---|---|---|---|
|
#18+
Вам стоит взглянуть на классы ThreadGroup и ThreadPoolExecutor. Первый, например, уже содержит удобные методы для мониторинга активных потоков. Останавливать потоки можно с помощью метода interrupt(), либо предусмотреть свой алгоритм терминирования. Есть даже deprecated метод stop(). О том, почему его не стоит использовать, можно почитать здесь http://docs.oracle.com/javase/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2013, 09:32:16 |
|
||
|
Java и потоки
|
|||
|---|---|---|---|
|
#18+
DoSOfRedRiverВам стоит взглянуть на классы ThreadGroup и ThreadPoolExecutor. Первый, например, уже содержит удобные методы для мониторинга активных потоков. Останавливать потоки можно с помощью метода interrupt(), либо предусмотреть свой алгоритм терминирования. Есть даже deprecated метод stop(). О том, почему его не стоит использовать, можно почитать здесь http://docs.oracle.com/javase/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html ThreadGroup давно не рекомендован к употреблению, потоки нельзя остановить вызвав метод interrupt(), этим методом можно только выразить желание чтобы поток остановился, про метод stop() вообще зря упоминали:) Ну а так да PoolExecutor поможет ТС ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2013, 13:11:18 |
|
||
|
Java и потоки
|
|||
|---|---|---|---|
|
#18+
забыл ник, Ну, насколько я знаю, зависший поток вообще нельзя безопасно остановить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2013, 18:57:43 |
|
||
|
Java и потоки
|
|||
|---|---|---|---|
|
#18+
DoSOfRedRiverНу, насколько я знаю, зависший поток вообще нельзя безопасно остановить. Чейта? Если поток бесконечным циклом занят, то да. А если он заблокирован на локе или на IO, то interrupt-ом чудесно выкидывается исключение и обрабатывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2013, 18:59:47 |
|
||
|
Java и потоки
|
|||
|---|---|---|---|
|
#18+
имхо, тут больше в другом проблема. Если он выполняется где-то в дебрях нативного кода, то прибить процесс может только ос, а ОС не придумали механизма корректного прибивания процессов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2013, 19:36:53 |
|
||
|
Java и потоки
|
|||
|---|---|---|---|
|
#18+
chabapokимхо, тут больше в другом проблема. Если он выполняется где-то в дебрях нативного кода, то прибить процесс может только ос, а ОС не придумали механизма корректного прибивания процессов. "процесс"-то тут при чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2013, 19:42:17 |
|
||
|
Java и потоки
|
|||
|---|---|---|---|
|
#18+
ShadowDamballahПодскажите, как реализовать следующее и чем лучше: - породить несколько потоков (задач), которые выполняют некую работу - создать что-то типа менеджера/монитора, который через некоторое время будет проверять состояния потоков и если один из них умер (скажем произошла ошибка в таске), сообщал об этом, но не переставал опрашивать “выживших” - менеджер должен иметь механизм, который терминирует все опрашиваемые таски. По-моему тут как раз надо не потоками оперировать. А тасками - см. Future/Callable. И хорошо бы определится, что такое "умер" и какая именно "ошибка"? Обработка исключений в Future/Callable нормально реализована. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2013, 19:43:35 |
|
||
|
Java и потоки
|
|||
|---|---|---|---|
|
#18+
chabapokимхо, тут больше в другом проблема. Если он выполняется где-то в дебрях нативного кода, то прибить процесс может только ос, а ОС не придумали механизма корректного прибивания процессов. Да. У нас была ситуация когда потоки обслуживающие сокеты впадали в коматоз и прибить их средствами java было невозможно. Как результат - аварийный ребут JBoss-а со всеми аппликейшенами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2013, 19:45:52 |
|
||
|
Java и потоки
|
|||
|---|---|---|---|
|
#18+
имхо, тут больше в другом проблема. Если он выполняется где-то в дебрях нативного кода, то прибить процесс может только ос, а ОС не придумали механизма корректного прибивания процессов. Вообще-то придумали - сигналы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2013, 21:00:18 |
|
||
|
Java и потоки
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Ну, собственно, о том и речь. Блокирование зависанием обзывать не корректно, на мой взгляд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2013, 21:49:19 |
|
||
|
Java и потоки
|
|||
|---|---|---|---|
|
#18+
DoSOfRedRiverНу, собственно, о том и речь. Блокирование зависанием обзывать не корректно, на мой взгляд. Про "зависания" вы же первый и упомянули. У автора темы только про ошибки. Взаимоблокировки и IO самые распространенные причины "зависания". Бесконечные циклы достаточно большая редкость. Вы какие-то ещё "зависания" знаете? GС паузы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2013, 22:18:54 |
|
||
|
Java и потоки
|
|||
|---|---|---|---|
|
#18+
автор"процесс"-то тут при чем? Сорри, речь шла конечно о потоках. Но да, хочется прибивать зависшее - юзай процессы, а не потоки. Правда они тоже бывают неприбиваемы. Получается, что так, но и то не всегда. авторВообще-то придумали - сигналы. а как сигналом можно остановить поток? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 13:32:33 |
|
||
|
Java и потоки
|
|||
|---|---|---|---|
|
#18+
maytonДа. У нас была ситуация когда потоки обслуживающие сокеты впадали в коматоз и прибить их средствами java было невозможно. Как результат - аварийный ребут JBoss-а со всеми аппликейшенами. Дамп стека коматоза не сохранился? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 14:07:30 |
|
||
|
Java и потоки
|
|||
|---|---|---|---|
|
#18+
chabapokНо да, хочется прибивать зависшее - юзай процессы, а не потоки. Правда они тоже бывают неприбиваемы. Получается, что так, но и то не всегда. Пожалуйста попродробнее про "неприбиваемые". В каких случаях бывают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 14:09:18 |
|
||
|
Java и потоки
|
|||
|---|---|---|---|
|
#18+
иногда ты делаешь kill, а процесс висит как зомби, и прибивается только тогда, когда прибивается (или завершается) его родитель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2013, 19:49:46 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38168017&tid=2129890]: |
0ms |
get settings: |
18ms |
get forum list: |
24ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
35ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 304ms |
| total: | 468ms |

| 0 / 0 |
