Вроде, оба метода проверяют флаг, хотел ли прервать какой-то поток, тот поток, в котором метод был вызван. Поправьте, если я не прав.
Понятно что isInterrupted() не статический и его надо вызывать на объекте типа Thread, а interrupted() статический и можно написать просто Thread.interrupted(). Но в чем все таки разница? И в каком потоке флаг будет проверятся, если мы применяем Thread.interrupted(), имея в виду что к объекту статические методы не привязаны?
Достаточно прочитать 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() этого не делает, плюс нестатический доступ позволяет проверять другие треды. Фактически, это еще и ограничивает возможность снять флаг прерывания у других тредов (нельзя "украсть" прерывание другого треда).
Метод interrupted является статическим и проверяет был ли установлен флаг прерывания у текущего потока. При этом флаг прерывания после вызова этого метода сбрасывается.
Метод isInterrupted() позволяет проверить флаг прерывания у потока, для которого этот метод был вызван. При этом сам флаг не сбрасывается.
И в каком потоке флаг будет проверятся, если мы применяем Thread.interrupted(), имея в виду что к объекту статические методы не привязаны?
Будет проверен флаг прерывания у текущего потока, в котором и происходит эта проверка.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости