Another implementation of a thread pool.
You should be using Task and ThreadUtilities instead, if you can.