Short question: Within a Tomcat 6 app - how can I run a (separate) thread-pool?
What is the best solution for running a thread pool?
For a simple background-task, you don't need any kind of thread pool at all. All you need to do is:
Write a ServletContextListener that launches a thread to perform the above steps that you define in a class that implements Runnable. In the contextDestroyed method, set a flag that triggers the checks indicated above in #2 and #5 and then calls Thread.interrupt so your thread terminates.
Your background task should definitely not try to synchronously send messages to clients. Instead, notify waiting pollers using some other mechanism like Object.notify on a monitor (which doesn't really make any sense since you don't want to block clients checking the current status), update a timestamp of some kind, or just have the polling-clients check the current data available in #4.