Using newCachedThreadPool() instead of newFixedThreadPool()