Another nitpick - most Java based web/app servers have used thread pooling (or similar approaches) for at least 10 years. Seems overly simplified to say these environments always "spawn a new thread".
That saves you from thread spawning costs, but not thread overheads.
but wouldn't you still require [Stack size] * [num concurrent connections] space? pooling just means that there won't be the cost of creating a new thread on all/most connections.