A thread pool is a collection of pre-created worker threads that process tasks from a queue. Instead of creating a new thread for each task (expensive!), you reuse a fixed pool.
Add tasks and watch how workers pick them up from the queue. Notice how tasks wait when all workers are busy, demonstrating bounded parallelism!
Start pool and add tasks...