The org.apache.tapestry.util.JanitorThread uses a waitForNextPass() function that makes it sleep for 30 seconds and then do another pass.
In this method an InterruptedException is caught and ignored. This prevents the thread from terminating normally when, for instance, a context is reloaded. See also http://java.sun.com/j2se/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html.
I think it would be better if the while-loop in the run() method exited when the wait() in waitfornextpass() method was interrupted.