Как узнать, когда конкретный процесс застрял? - PullRequest
1 голос
/ 10 июня 2010

Есть ли способ узнать, когда определенный процесс "застрял" в Java?

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

Какие-нибудь проблемы?

Ответы [ 3 ]

1 голос
/ 12 июня 2010

Под Java 6 вы можете получить дамп потока для всех потоков. Если вы снимаете их каждую минуту, вы можете видеть, что происходит.

0 голосов
/ 12 июня 2010

Если другое приложение также является java, вы можете использовать Java Service Wrapper для мониторинга и перезапуска его в случае зависания.

http://wrapper.tanukisoftware.org/doc/english/download.jsp

0 голосов
/ 10 июня 2010

Мой первый вопрос - спросить, что вы подразумеваете под «застрял».Это в бесконечном цикле?Это тупик?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...