463 подписчика

Java 1015. Чем отличаются методы interrupt, interrupted, isInterrupted?

  Итак, interrupt() выбрасывает исключение InterruptedException, interrupted() проверяет флаг прерывания и сбрасывает его, а isInterrupted() только проверяет флаг прерывания, не сбрасывая его.

  • Метод interrupt() прерывает выполнение потока, вызывая исключение InterruptedException. Это может возникнуть в любой точке кода, который может генерировать это исключение, такие как wait(), sleep() и join().
  • Метод interrupted() - это статический метод, который используется для определения состояния прерывания потока, в котором он используется. Он возвращает true, если поток был прерван, и false, если он не был прерван. Этот метод также сбрасывает флаг прерывания.
  • Метод isInterrupted() - это нестатический метод, который возвращает состояние прерывания потока. Он возвращает true, если поток был прерван, и false, если он не был прерван. Этот метод не сбрасывает флаг прерывания. Если его вызвать дважды подряд, то он вернет true только в том случае, если между двумя вызовами поток был прерван.

Итак, interrupt() выбрасывает исключение InterruptedException, interrupted() проверяет флаг прерывания и сбрасывает его, а isInterrupted() только проверяет флаг прерывания, не сбрасывая его.

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov