09 Feb The assignment is about using multithreading for parallel programming.?In the assignment folder you will find: zip file for examples of using Java Multithreading main functions. the pdf v
the assignment is about using multithreading for parallel programming. In the assignment folder you will find:
- zip file for examples of using Java Multithreading main functions.
- the pdf version of the assignment
Parallel Computing and Distributed Systems
Assignment 1 (10 points)
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 student’s 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 employee’s 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.
Submission: 1. Use the IDE you find appropriate to develop your Java programs, and then create one PDF file where you list/copy the code
you developed for each question along with a screenshot for the outputs (of question 1 only).
2. Submit ONE ZIP/RAR file for the developed Java files and the PDF, named lastname_firstname.zip, directly to the folder titled Assignment 1 under the D2L Assignments tab (other formats will not be accepted).
3. Check the due date on D2L. You can submit your assignment within 24 hours after this due date to be graded out of 50% of the assignment’s grade. After this grace period, your late submission will not be accepted.
,
D_ThreadJoin.java
D_ThreadJoin.java
package Threads_PC_341 ;
public class D_ThreadJoin {
public static Thread thread1 ;
public static Thread thread2 ;
public static void function1 () throws InterruptedException {
//-----------------------Thread 1 is running this function
for ( int i = 0 ; i < 5 ; i ++ ) {
System . out . println ( "Thread " + Thread . currentThread (). getName () + " is running" );
}
}
public static void function2 () throws InterruptedException {
//-----------------------Thread 2 is running this function
thread1 . join (); // Wait for thread1 to finish first
//thread1.join(5000); // Waiting for 5 seconds for thread1 to finish
for ( int i = 0 ; i < 5 ; i ++ ) {
System . out . println ( "Thread " + Thread . currentThread (). getName () + " is running" );
}
}
public static void main ( String [] args ) throws InterruptedException {
/*
join(): is used to start one thread's execution to end of another thread's execution
such that thread B does not start running until thread A ends.
// 1st use: waits for thread A to die.
If any executing thread B calls join() on thread A (i.e; A.join())
Immediately B will enter into waiting state (blocked) until A completes its execution.
// 2nd use: waits at most this much milliseconds for thread A to die
join(long millis) method waits at most this much milliseconds for certain thread to die.
A timeout of 0 means to wait forever
Giving a timeout within join(), will make the join() effect to be nullified after the specific timeout.
*/
thread1 = new Thread (
new Runnable () {
public void run () {
try {
function1 ();
} catch ( InterruptedException e ) {
e . printStackTrace ();
}
}
}
);
thread1 . setName ( "first child" );
thread2 = new Thread (
new Runnable () {
public void run () {
try {
function2 ();
} catch ( InterruptedException e ) {
e . printStackTrace ();
}
}
}
);
thread2 . setName ( "second child" );
thread1 . start ();
thread2 . start ();
}
}
B_CreateSubThread.java
B_CreateSubThread.java
package Threads_PC_341 ;
public class B_CreateSubThread {
public static void function1 () {
for ( int i = 0 ; i < 10 ; i ++ )
System . out . println ( "Thread " + Thread . currentThread (). getName () + " is running and value of i: " + i );
}
public static void function2 () {
for ( int j = 0 ; j < 10 ; j ++ )
System . out . println ( "Thread " + Thread . currentThread (). getName () + " is running and value of j: " + j );
}
public static void main ( String [] args ) {
Our website has a team of professional writers who can help you write any of your homework. They will write your papers from scratch. We also have a team of editors just to make sure all papers are of HIGH QUALITY & PLAGIARISM FREE. To make an Order you only need to click Ask A Question and we will direct you to our Order Page at WriteDemy. Then fill Our Order Form with all your assignment instructions. Select your deadline and pay for your paper. You will get it few hours before your set deadline.
Fill in all the assignment paper details that are required in the order form with the standard information being the page count, deadline, academic level and type of paper. It is advisable to have this information at hand so that you can quickly fill in the necessary information needed in the form for the essay writer to be immediately assigned to your writing project. Make payment for the custom essay order to enable us to assign a suitable writer to your order. Payments are made through Paypal on a secured billing page. Finally, sit back and relax.
About Wridemy
We are a professional paper writing website. If you have searched a question and bumped into our website just know you are in the right place to get help in your coursework. We offer HIGH QUALITY & PLAGIARISM FREE Papers.
How It Works
To make an Order you only need to click on “Order Now” and we will direct you to our Order Page. Fill Our Order Form with all your assignment instructions. Select your deadline and pay for your paper. You will get it few hours before your set deadline.
Are there Discounts?
All new clients are eligible for 20% off in their first Order. Our payment method is safe and secure.