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