Потоки Java перестают работать внезапно - PullRequest
1 голос
/ 05 апреля 2010

У меня есть приложение J2SE, работающее на 1.5 Java VM в RHEL OS. Одной из задач приложения является создание 3-х бесконечно работающих пользовательских потоков во время запуска. Цель состоит в том, чтобы проверить запрос определенного типа в таблице внутренней базы данных и выполнить соответствующие операции.

Как мы заметили, долго работающие потоки внезапно перестают работать, но приложение продолжает работать, и процесс JVM можно увидеть в ps -ef | grep java

Может ли кто-то пролить свет на то, почему потоки, созданные для работы в бесконечном цикле, внезапно прекращают работу? Любые идеи о том, как обнаружить эту проблему и возможные решения, будут очень полезны

С уважением, Кришна

Ответы [ 2 ]

5 голосов
/ 05 апреля 2010

Я бы посоветовал отправить Ctrl + Break в ваше приложение, сбросить потоки и проанализировать вывод. Возможно, ваши потоки ожидают некоторого ввода (IO). Возможно, они зашли в тупик. Возможно, они вышли с неисследованным исключением. Дамп потока расскажет вам, что происходит (и это поможет, если вы заранее назовете свои потоки, чтобы вы могли идентифицировать их в дампе).

3 голосов
/ 05 апреля 2010

Возможно, у вас есть необработанные исключения.

Прежде всего, вы должны регистрировать все свои активности потока (вы можете использовать log4j для достижения этой цели).

Вы также можете переопределить метод uncaughtException класса ThreadGroup и создавать оповещения о том, когда поток умирает из-за исключения, которое не было перехвачено.

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