Several threads are created and await work.
- Does not require new threads to be created upon every service request (recycling threads reduces overhead).
- # of threads in application is fixed to the size of the pool.
- The task to perform and the mechanics of creating the task can be separated, allowing for different strategies of running the task.