> "Cooperative" (as opposed to preemptive) cancel is much cleaner.

Which what Thread.interrupt does.