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.