Question
Question1 (parallel vs. sequential): In this question, we need to measure the time difference between performing certain tasks sequentially and dividing and then performing the
Question1 (parallel vs. sequential):
In this question, we need to measure the time difference between performing certain tasks sequentially and dividing and then performing the same task in parallel. Create a class named STUDENT, that holds the students GPA (float value between 2.0 to 4.0), AGE (integer value between 18 to 30), and ID (unique integer value per student). For each of the following versions, calculate (using Java.Time or the Java API you find appropriate) how long each version takes in seconds.
Sequential version (Name this file as Q1_SeqV.java): o Create a list of 50,000 students with randomly generated GPAs, randomly generated Ages, and sequential IDs. o After creating the list, your program calculates and prints the average GPA and average AGE.
Parallel version 1 (Name this file as Q1_PLV1.java):
o Repeat the sequential version using two threads along with the main thread. o Each thread creates a list of 25,000 students with randomly generated GPAs, randomly generated Ages, and sequential IDs. o Each of the two threads then calculates the average GPA and AGE (after creating the lists). o The two threads work in parallel. o The main thread waits for the two threads to finish and then calculates and prints the final average GPA and AGE from what
is reported by the individual threads. Parallel version 2 (Name this file as Q1_PLV2.java):
o Repeat the Parallel version1 task using five threads (each is working on 10000 students) along with the main thread. To measure the time your computer takes to complete a certain task:
Read and store the current time (t1) before you start the task (e.g., before creating the lists), After the task (e.g., after calculating the average), read and store the current time (t2). The time it takes your computer to complete the task is then: t2 t1.
Question2 (Sorting):
In this question, we need to divide, sort, and merge a list of Employees using the multithreading framework. Create a class named EMPLOYEE that holds the employees ID (integer value of unique value) and salary (integer value).
Step1: The main thread creates a list of 10,000 Employees with sequential IDs (1 to 10,000 to keep them unique) and randomly generated salaries (between 1500 to 4000); name this list EmpList.
Step2: Split the generated list EmpList into two lists of equal length: List1, and List2. Step3: Create two threads; each thread should sort the corresponding list (thread1 sorts List1, and thread2 sorts List2)
ascendingly with respect to the salary.
Step4: The main thread then waits for the two threads, then merge the two sorted sublists (List1 and List2) into the main list (EmpList) ascendingly with respect to the salary.
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started