The servlet container is free to create and remove servlets as it pleases. So if you start any threads in a servlet's
init method then
you should terminate those in the
destroy method.
A better way to create background threads would be in a
ServletContextListener, which is guaranteed to run only once at the beginning (and end) of a web app's lifetime.