Java ThreadPoolExecutor перестает работать через некоторое время - PullRequest
3 голосов
/ 09 августа 2011

У меня проблема с ThreadPoolExecutor.Он отлично работает в течение нескольких часов, но иногда (в произвольное время, иногда через 2 минуты или 3 часа) он останавливает выполнение представленных задач, и программа зависает.

Очередь заполнена, и все основные потоки активны на этомвремя.

Я просто не знаю, откуда это.Тем более, что иногда он работает в течение 3 часов, в то время как все основные потоки работают все время.

Если есть кто-то, у кого есть предложения для меня, я был бы очень рад.

Ответы [ 4 ]

1 голос
/ 10 августа 2011

Взгляните на дамп стека. Это скажет вам, находятся ли потоки в какой-либо операции блокировки, ожидая состояния, которое никогда не происходит, работает или действительно заблокировано.

0 голосов
/ 15 ноября 2011

Может быть связано с http://bugs.sun.com/view_bug.do?bug_id=6822370, если вы использовали более старую версию JVM. Это было исправлено в 6u18. Смотри http://www.oracle.com/technetwork/java/javase/6u18-142093.html

0 голосов
/ 10 августа 2011

Возможно, где-то произошла утечка памяти, и это привело к блокировке через несколько часов

0 голосов
/ 10 августа 2011

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

Если это ваш случай, установите время прерывания.

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

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