Найти тему
DEBAGanov

Java 497. В чем разница между методами isInterrupted() и interrupted()?

Методы isInterrupted() и interrupted() в Java используются для проверки статуса прерывания потока, но они имеют различное поведение.

Метод isInterrupted() является нестатическим методом класса Thread и возвращает значение флага прерывания для данного потока. Если флаг прерывания установлен, метод возвращает true, иначе - false. При этом состояние флага прерывания не изменяется.

Например, следующий код проверяет флаг прерывания для потока myThread:

if (myThread.isInterrupted()) {
// выполнение действия при прерывании потока }

С другой стороны, метод interrupted() также является нестатическим методом класса Thread, но он проверяет флаг прерывания для текущего потока. Если флаг прерывания установлен, метод возвращает true, а затем сбрасывает флаг прерывания до значения false. Если же флаг прерывания не был установлен, метод возвращает false.

Например, следующий код проверяет флаг прерывания для текущего потока и сбрасывает его до значения false:

if (Thread.interrupted()) {
// выполнение действия при прерывании потока }

Таким образом, основная разница между методами isInterrupted() и interrupted() заключается в том, что первый проверяет флаг прерывания для конкретного потока, а второй - для текущего потока и сбрасывает его до значения false.

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

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

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