The official Sun Oracle stance on Thread.stop() is that it should not be used. Among other arguments, they write:
It should be noted that in all situations where a waiting thread doesn’t respond to Thread.interrupt, it wouldn’t respond to Thread.stop either.
But I do not understand that. If a thread is busy actively working on something (not just waiting or blocking on an external resource) and doesn’t explicitly check the interrupt flag, wouldn’t Thread.interrupt() do nothing while Thread.stop() will still work (throw ThreadDeath)?
I think you misunderstand the quoted text. It refers to a thread that is waiting, not a thread that is running. Specifically, it is referring to cases like the following:
When the thread is blocked in an I/O call, low-level JVM implementation issues prevent it responding to either a
stopor aninterrupt.A thread that doesn’t want to be stopped can catch
ThreadDeath, and this is analogous to a thread that doesn’t want to be interrupted simply ignoring the flag.