не уверен, что вы уже поняли это, но если это тупик, то дамп потока будет здесь очень полезен. В зависимости от того, в какой ОС запущено приложение и от ваших прав доступа к нему, вы можете сгенерировать его разными способами.
- on * nix отправка сигнала QUIT процессу ('kill -3 pid') сделает работу
- используя jconsole / jvisualvm имеет возможность получить его
- с использованием стандартного jdk jstack (рассмотрим опции -F -l) добьется цели
- если вам повезет оказаться на солярисе, pstack очень поможет
Как только вы его получите, проанализируйте заблокированные / ожидающие потоки, чтобы найти тупик. Вы можете сделать это вручную или с помощью некоторых существующих анализаторов, которые используют алгоритмы обнаружения тупиковых ситуаций. Кстати, у jvm есть одна встроенная функция, и она может дать вам идею прямо в дампе потока.
Если я могу помочь больше, просто дай мне знать.
удачи.
С уважением,
Баз