...
The Thread-Per-Message strategy fails to provide graceful degradation of service. As more threads are created, processing continues normally until some scarce resource is exhausted. For example, a system may only allow only a limited number of open file descriptors even though several more threads can be created to service requests. When the scarce resource is memory, the system may fail abruptly, resulting in a denial of service.
...
Using simplistic concurrency primitives to process an unbounded number of requests may result in severe performance degradation, deadlock, or system resources resource exhaustion and denial-of-service.
...