I have a standalone java app which used the ExecutorService to process a number of jobs in parallel
ExecutorService es = Executors.newFixedThreadPool(10); <
If you are using JBoss, you can use org.jboss.seam.async.ThreadPoolDispatcher.
ThreadPoolDispatcher is completely managed.
For others useful managed classes, see the package: org.jboss.seam.async.