Use a thread pool, don't run if already running