What about using a thread pool instead?
http://docs.oracle.com/javase/tutorial/essential/concurrency/pools.html
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executors.html#newCachedThreadPool-int-