Synchronize threads. Write a program that launches 1,000 threads. Each thread adds 1 to a variable sum that initially is 0. Define an Integer wrapper object to hold sum.
Create two versions of the program with and without synchronization to see the different effects.
Hint: In the synchronized version, the sum will always be 1000 at the end. In the unsynchronized version, the sum will most likely be a number other than 1000 at the end.