A thread pool is a fixed set of worker threads that pull tasks from a shared queue. You submit work; an idle worker picks it up, runs it, then loops back for more. The workers live for the life of the program.
Reusing threads dodges the birth-and-death cost of spawning one per task. That setup, tens of microseconds each, adds up fast under load. Warm threads skip it entirely.
A pool also caps concurrency. With a bounded worker count, you never accidentally launch ten thousand threads and exhaust memory or thrash the scheduler. The queue absorbs bursts instead.
The tradeoff is tuning. Too few workers and tasks wait in the queue; too many and they fight over cores. Size the pool to the workload: roughly core count for compute, higher for I/O-bound work.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
The diagram below the answer is the concept . Jump to it ↓