Методы 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