Reference no: EM133365
Question
Generate a new Java Project in Eclipse and complete following requirements based on the Threads. Some threads will share a single object and contribute their individual result to shared object. The shared object accumulates partial results. Make a package named cs520.hw6. Using this package, produce the following classes.
1. Generate a class named SharedResults as follows. The class keeps track of shared result.
a. The instance (or member) private variable result (int).
b. A void addToResult process that takes the given integer argument and adds it to the shared result. This method then prints to the console the name of the current thread, the value it added, and the cumulative result. Handle the synchronization issue with this method.
c. The getResult method with no arguments which returns the shared result. Handle synchronization issue with this method.
2. Generate a class named LongTask that extends the Thread class.
a. The instance (or member) private variables sharedData (of type SharedResults), start (integer) and end (integer).
b. A single constructor which takes the above three arguments and stores them in the instance values. Also, create a name for this thread as Thread_<start>_<end>
c. In the run method, add the integer numbers from start to end (both inclusive) using a for loop. Also, sleep for a random time (up to 10 milliseconds) in each iteration of the loop. After loop, invoke the addToResult technique of shared object and provide this accumulated sum.
3. Produce a Test class to test following functionality in its key method.
a. make the SharedResults object and assign it to a variable.
b. generate five LongTask objects by passing the above shared object and the start and end values for each as (1, 100), (101, 200), (201, 300), (301, 400), and (401, 500) respectively.
c. Start each thread as it is formed.
d. Wait for all the threads to complete using joins method.
e. Print result from the shared object.