Интересует, как реагирует поток, который закрывается извне, если он содержит работу с сокетной системой, а именно: Закрываются ли сокеты и стирается ли информация о них, если поток закрывается извне с помощью функций .stop() или .interrupt()?
ThreadDeath, провоцируемый методом stop() никакие захваченные потоком ресурсы, не освобождает, только мониторы.
Крайне не рекомендуется останавливать потоки методом stop(), это работает, однако, все мониторы, которые были захвачены в этом потоке (секции кода, обёрнутые synchronized), будут отпущены, что в свою очередь может привести к не консистентному состоянию приложения.
interrupt() же устанавливает внутренний флаг, который вы можете проверить внутри вашего потока, все правильно закрыть и завершить выполнение.
Для этого у потока есть метод isInterrupted() он проверяет флаг прерывания у потока. При этом сам флаг не сбрасывается.
Так же есть метод interrupted() он проверяет был ли установлен флаг прерывания у текущего потока. При этом флаг прерывания после вызова этого метода сбрасывается.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости