Работать в поте лица!

  • 7
  • Недоступна
Реализуй логику метода interrupt, который должен прерывать трэд предварительно закрыв используемые ресурсы. Используй метод super-класса в блоке finally.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (31)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Михаил
Уровень 51, Санкт-Петербург, Russian Federation
22 февраля, 12:06
Коллеги, возник вопрос. Зачем super.interrupt() обязательно убирать в блок finnally? Он ведь и так отработает. Для себя пока нашел только объяснение, что может выскочить исключение не улавливаемое блоком catch (IOException e) и тогда программа прервется. Хотя какое здесь может быть еще исключение? Есть ли в этом есть другой смысл?
Sergey Kornilov
Уровень 38, Petropavlovsk, Казахстан
22 января, 14:47
Всего эту задачу решили 9246 учеников.
Max Zap
Уровень 41
6 октября 2021, 20:15
Этот easy и прошлый hard по сложности почти идентичны...
Максим Дудин
Уровень 37, Калининград
13 июля 2021, 15:25
Нужно обратить внимание на условие: "Трэд должен быть прерван в любом случае, даже если во время закрытия ресурсов было выкинуто исключение." - в catch которым оборачивается закрытие сокета должен быть (IOException ignored) не забыть, что super.interrupt в finaly ...
Даниил Александрович
Уровень 35, Тамбов , Россия
12 марта 2021, 05:43
чем проще задача тем меньше комментариев! ;)
Евгений
Уровень 41, Санкт-Петербург, Россия
28 июня 2020, 07:35
Обязательно надо закрывать и Socket и InputStream, хотя закрытие одного должно автоматически закрывать другой.
Максим Дудин
Уровень 37, Калининград
13 июля 2021, 15:27
InputStreamе не обязательно (в эталонном варианте его не закрывают), но "руку на отсечение" не дам, потому что сначала тоже закрыл и в таком виде решение прошло валидацию
alex
Уровень 41, Россия
16 июня 2020, 13:12
народ поясните вот это: super.interrupt();
Bonus
Уровень 35
12 августа 2020, 18:41
Поток останавливается когда мы закрываем ресурсы:
if (count < 0) {
                    break;
а super.interrupt() выставляет флаг что поток прерван
Android Developer Android Developer в Яндекс
7 октября 2020, 21:52
мы переопределили метод interrupt(), super.interrupt() это вызов метода "настоящего", который находится в классe Thread, от которого мы наследуемся.
Islam Laipanov
Уровень 30, Москва
10 мая 2020, 23:54
кто знает если socket.close(), то in закрывается автоматически или нужно каждый по отдельности закрывать?
Agent Smith
Уровень 37
30 ноября 2020, 16:06
Наведи мышкой на метод .close() у сокета и увидишь: Closing this socket will also close the socket's InputStream and OutputStream. If this socket has an associated channel then the channel is closed as well.
Максим Дудин
Уровень 37, Калининград
13 июля 2021, 15:22
точнее нажать ctrl и левая клавиша мыши по close Спасибо... это объясняет отсутствие in.close(); в референсном решении
Aka_ron4uk Java Developer
27 апреля 2020, 10:31
При прерывании потока через Thread.currentThread().interrupt(); Ловим "Неизвестная ошибка..." Вариант через super.interrupt() спасает. Может кстати кто нибудь пояснить почему? Эти методы в рамках текущей задачи разве не выполняют одно и то же?
Yerzhan
Уровень 29, Актау, Казахстан
28 марта 2020, 19:42
совсем забыл про многопоточность и не мог понять задачку, пока не прочитал следующее 1. Java Полное руководство Шилдта глава №11 Многопоточное программирование, около первых 10 страниц было достаточно 2. https://javarush.ru/groups/posts/654-klassih-socket-i-serversocket-ili-allo-server-tih-menja-slihshishjh, чтобы понять что за ресурсы. после этого решил с 4 попытки, из за того, что finally() поставил в run(), переставил в interrupt() и валидатор принял, невнимательность.