Thread Pooling
Makes sense in programs that spawn a large number of threads
Allocation of static set of threads ahead of time, each thread goes to sleep before first use
Pool threads are consumers of events such as connection requests; event wakes up thread; thread goes back to sleep after work is done
Avoids high overhead of thread object creation which often involves creation and initialization of member objects