It depends on what sort of "cron" manager you're using, in part.
If you're running Quartz and you have a
servlet that starts up Quartz, add a destroy() method override that shuts down Quartz.
Tomcat won't stop threads started by webapps, but it WILL hang waiting for the webapps to clean themselves up.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.