ThreadPool keeps thread idle instead of creating and tearing them down, not all the time though based on how many threads it has a given time.
Even though I don’t know the whole process during a thread creation and destruction, why is more expensive than having threads idle.
Well, because put simply, an idle thread isn’t doing anything. It’s just waiting around for work to do. Creating a thread involves allocating memory, load balancing…all kinds of stuff behind the scenes.