Calling interrupt on a thread does not directly cause the thread to throw an InterruptedException. All it does is set the interrupt flag for that thread. Methods like sleep, wait, or join can reference that flag on the current thread in order to decide whether to throw an InterruptedException.
Interruption is cooperative, the thread being interrupted decides how it will respond; this way the thread can do whatever cleanup it needs to do and not get shot down partway through.
You should usually use Thread.isInterrupted() because that doesn't change the value of the interrupted flag. Thread.interrupted() resets the flag:
The interrupted status 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).
while Thread.isInterrupted() doesn't:
Tests whether this thread has been interrupted. The interrupted status
of the thread is unaffected by this method.
Checking the interrupted flag means your thread can detect whether it's been interrupted without its having to sleep or wait. Neither Thread.isInterrupted() nor Thread.interrupted() throws InterruptedException, the code using it would check the return value.
Also, Thread.interrupt doesn't throw InterruptedException. (And any exception thrown would be in the calling thread, not in the thread being interrupted.) The interrupt method is used to set the interrupt flag on another thread. Having a thread interrupt itself is pointless, the thread could return instead.