The prototype initially creates 700 threads all of which are contained in a
vector (threadList), each thread does some "simple" string processing
(basically tokenize a string) and then exists. On completion of the thread,
the thread sets its own state in the thread-class to dead.
Another thread called GarbageCollector, which is created before the other
threads are created, is continually traversing the threadList, looking for
dead threads, once a dead thread is found, it deletes the pointer pointing
to the thread class in the list, creates a new thread and adds it to the
end of the list. Hence continually maintaining the number of threads being
run at any one time, (hopefully)