Creating a thread is expensive because each one needs its own stack and kernel bookkeeping. The operating system allocates memory, registers the thread with its scheduler, and sets up later cleanup.
The biggest cost is the stack. A default thread stack reserves from half a megabyte to eight, depending on the platform. Spawn thousands and you burn gigabytes of address space on stacks alone.
In wall-clock terms, creating and destroying a thread takes tens of microseconds. That dwarfs the microsecond-scale work you often hand it, so per-request spawning spends more on setup than on the task.
This is why servers reuse threads from a pool instead of making one per request. The cost is in the constant creation and teardown under load.
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 ↓