abstract away thread creation
an thread pool