Servlets, JSPs, any components attached to these things should
not spawn threads or do thread sleep or wait functions. Not only will it not allow the servlet to run asynchronous from your web request, it will at best delay the response processing for the request and at worst possibly crash your entire web application server.
Asynchronous processing in J2EE/JEE can be done, but not by such crude methods.
In
J2EE, you needed to have such threads spawned and owned by some mechanism external to the servlet/jsp request processor code. Commonly this mechanism was set up in a servletContextListener method, although the init() method of a servlet was also popular, if less desirable.
In the latest JEE, this common need has been recognised and cleaner mechanisms have been defined. However, I'm going to have to leave you to read the JEE documentation for yourself, as I haven't had need/opportunity to dig into it myself yet. For one thing, I'd have to do version upgrades for all the servers I expected to use this new technology on.