To avoid unbounded thread creation, servers often use a thread pool: a fixed number of threads are created at startup and incoming requests are placed into a queue. Threads pick up requests from the queue when they become free.
Advantages:
- Limits resource usage.
- Provides predictable performance.
- Balances efficiency with concurrency.