There are many instances when one needs to process
certain objects on seperate threads. But spawning
a seperate thread per object may cause the system
to crash. The Thread Pooling Framework can be used
to process the the objects on a predefined number
of threads. If all threads are busy, the objects
are kept in the pool. Whenever a thread ends, an
objects is taken from the pool and processed on a
new thread. This continues until the pool is empty.