In my webapp, I created a service that is using an ExecutorService with fixed size ThreadPool. I reuse the same ExecutorService during the whole ap
In addition to what Tomasz suggested you can also use CachedThreadPool
Threads that have not been used for sixty seconds are terminated and removed from the cache. Thus, a pool that remains idle for long enough will not consume any resources
So a very good solution would be use CachedThreadPool and shutdown it in ServletContextListener.contextDestroyed().