Полностью дикий догадка: если вы используете TCP, ваше приложение может не заметить, что его сокет был отключен. Если он заблокирован при чтении, он может не заметить, пока не попытается что-то записать в сокет. Это зависит от того, насколько «чистым» является отключение сокета - если сокет не получает пакет RST с другой стороны, он не будет знать, что другой конец пропал.
Вы можете попробовать принудительно создать дамп потока из вашего приложения. Обычно JVM реагирует либо на Ctrl - \ при работе на терминале, либо на сигнал kill -QUIT
с трассировкой стека каждого потока. Это позволило бы вам увидеть, где обсуждаемая тема заблокирована.
Если вы можете опубликовать некоторый подозрительный код, было бы намного проще попытаться поставить диагноз. Или вы можете объяснить, почему вы думаете, что кеширование DNS будет проблемой?