1. <code>stop()</code> does stop the thread, through a rather interesting mechanism. But it's deprecated; don't use it.
2. <code>wait()</code> and its timed variants move the thread to the "waiting" state. The thread stops running. When it moves out of "waiting" it will have to reacquire the lock of the object on which <code>wait()</code> was called and will then be eligible to run again.
3. <code>MediaTracker.waitForID()</code> - see below
4, 5, 5a. <code>interrupt()</code>, <code>interrupted()</code>, and <code>isInterrupted()</code> do not stop the thread. If the thread is in "ready" or "running", <code>interrupt()</code> merely sets the thread's interrupted flag. The thread may check the status of this flag with either of the other two methods. A call to <code>interrupted()</code> returns the interrupted flag value and resets the flag to <code>false</code>. <code>isInterrupted()</code> returns the interrupted flag value but does not reset its value. If the thread is in "sleeping", then
<code>interrupt()</code> sets the interrupted flag the thread leaves "sleeping" and enters "ready"as soon as the thread begins "running" it throws an <code>InterruptedException</code> and the flag is clearednote that calls to the query methods will never return <code>true</code> in this case - the flag is cleared before you can test it. If the thread is in "waiting", then the behavior is the same as if it were "sleeping", but the thread must contend for the monitor's lock before reentering "ready".
6. <code>sleep()</code> does not stop the thread. The thread leaves "running" and enters "sleeping". When the sleep expires or the thread is interrupted, it will reenter "ready" and therefore be eligible to run again.
7. <code>yield()</code> does not stop the thread. The thread leaves "running" and enters "ready". It remains eligible to run.
8. <code>suspend()</code> moves the thread from "running" to "suspended"
without releasing any locks. This thread's <code>resume()</code> method must be called from some other thread to move the thread back to "ready". If the other thread needs a lock held by this thread, deadlock results. <code>suspend()</code> is deprecated; don't use it.
To see a more visual representation of these thread states, look at my recent post on Thread States.
Whew. Answering your question made me realize I've got a couple of blank spots (thanks):
1. Does anyone know what happens if <code>interrupt()</code> is called when a thread is not waiting or sleeping but is contending for a lock?
2. I've never used the <code>MediaTracker.waitXXX</code> methods. Does anyone know whether they're like <code>wait()</code> or like <code>sleep()</code>? Does the thread relinquish any locks when using these methods?