> - Kill and raise require the target thread to eventually reach a
> checkpoint where they are willing to "listen" to the kill or raise
> event. If they don't, the calling thread will wait forever.
I think this is fair. I also think that the core developer may need to 
really think about what should be a checkpoint *in the language itself* 
(for instance, end of a block, end of a method, whatever). For instance, 
not allowing to have a checkpoint in an "ensure" context would fix the 
ensure-related issues (but may not fix others that I don't see)

My main use of Thread#raise is "returning" from a ConditionVariable#wait. 
Can I assume this is seen as a checkpoint by JRuby ?
 
Sylvain Joyeux