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. None of that is free.
The biggest cost is the stack. A default thread stack reserves from one 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 sounds tiny, but it dwarfs the microsecond-scale work you often hand it. 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 pain is not the running; it is the constant birth and death 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 ↓