Расскажите как вы понимаете:
currentThread();
isInterrupted();
Я понимаю это как:
currentThread(); - даёт тот поток который действует в данный момент времени, если напишем currentThread().getName() - то он выдаст имя текущего действующего потока.
isInterrupted(); - это тот же .interrupt();, только он НЕ снимает флаг прерывания. Если boolean был true и программа начала работать, после выполнение .interrupt(); должен перевести её в false. А isInterrupted(); этого не делает, после завершения как была true так и осталось.
Правильно ли?
account deleted
6 уровень
currentThread(); и isInterrupted();
Решен
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
АлександрExpert
14 июля 2019, 18:05решение
currentThread() возвращает нить которая вызывает этот метод. Мутно получилось. Т.е. Нить которая выполняет этот код. Например в каком-то методе(с которым могут работать разные нити) тебе нужно работать с текущей нитью - для этого ты этот метод используешь .
isInterrupted() - это геттер для поля типа boolean. В классе Tread есть поле типа boolean которое говорит прервали нить или нет. Этот метод возвращает данное значение и не может его менять. А interrupt() меняет, но это не означает что нить завешится. Она завершается ропределенным способом. Например в методе sleep есть проверка на прерывание и в момент когда ты нить усыпляешь она может быть прервана.
Все это подробнее будет рассмотрено в ветке многонитевости.
+6