Какая разница между interrupted() и isInterrupted()

310
24 марта 2017, 23:21

Вроде, оба метода проверяют флаг, хотел ли прервать какой-то поток, тот поток, в котором метод был вызван. Поправьте, если я не прав. Понятно что isInterrupted() не статический и его надо вызывать на объекте типа Thread, а interrupted() статический и можно написать просто Thread.interrupted(). Но в чем все таки разница? И в каком потоке флаг будет проверятся, если мы применяем Thread.interrupted(), имея в виду что к объекту статические методы не привязаны?

Answer 1

Достаточно прочитать javadoc

/**
 * Tests whether the current thread has been interrupted.  The
 * <i>interrupted status</i> of the thread is cleared by this method.  In
 * other words, if this method were to be called twice in succession, the
 * second call would return false (unless the current thread were
 * interrupted again, after the first call had cleared its interrupted
 * status and before the second call had examined it)...
 */
public static boolean interrupted()

Thread.interrupted() вдобавок к проверке снимает флаг прерывания. thread.isInterrupted() этого не делает, плюс нестатический доступ позволяет проверять другие треды. Фактически, это еще и ограничивает возможность снять флаг прерывания у других тредов (нельзя "украсть" прерывание другого треда).

Answer 2

Метод interrupted является статическим и проверяет был ли установлен флаг прерывания у текущего потока. При этом флаг прерывания после вызова этого метода сбрасывается.

Метод isInterrupted() позволяет проверить флаг прерывания у потока, для которого этот метод был вызван. При этом сам флаг не сбрасывается.

И в каком потоке флаг будет проверятся, если мы применяем Thread.interrupted(), имея в виду что к объекту статические методы не привязаны?

Будет проверен флаг прерывания у текущего потока, в котором и происходит эта проверка.

READ ALSO
main java IntelliJ IDEA

main java IntelliJ IDEA

Здравствуйте уважаемые форумчане, извиняюсь сразу за глупый вопрос, но ответа пока на него не нашел

363
Проверка работы X-сервера

Проверка работы X-сервера

Периодически зависает X-серверКаким образом можно проверить завис он или работает? Проверку необходимо реализовать на python, но и не откажусь...

210