join( ) , wait( ) and sleep( ) send a thread to a waiting state and not a runnable state
whereas yield( ) sends a thread to a runnable state and not in
a waiting state
when you call the interrupt method on that thread , an InterruptedException
is thrown if and only if the thread is not in a runnable state
that is why methods such as join( ) , wait( ) and sleep( ) throw
an InterruptedException
On the other hand when interrupt is called on a thread which
is running or in a runnable state its "interrupt status" is set
(which can be verified using the isInterrupted method in the Thread class)
Setting the "interrupt status" does not affect the state of the
thread in any way and it contines to be in running or runnable state
Hope i hav cleared u r doubt ,
santhosh sharma (
scjp 1.4 100%)