This example shows how to control creation and termination
of multiple threads.  A series of "Evaluator" threads are 
started, each of which performs a simple computation 
(squaring the parameter to its constructor and storing it
in a "result" field).  This class creates the thread objects,
starts them running, waits for them to complete and then
outputs the total of the results.

This isn't a very good use of threads -- the overhead of 
creating and terminating all 5 of them will vastly outweigh
the 'parallelism' of the squaring operations.  However, the
same technique would be useful in larger calculations such
as computing  portions of a ray-traced images.  In a 
practical setting it would be important to create an
appropriate number of threads -- too many introduces overheads
of context switching and contention for other resources,
too few may not allow additional CPUs to be exploited on a
multi-processor machine.

