Question
I am looking for the java code for below two programs: 1)The Starter.java program: The first program you will write will be called Starter.java. This
I am looking for the java code for below two programs:
1)The Starter.java program:
The first program you will write will be called Starter.java. This program should not be in a package. This program will do four tasks: 1. Read from the user that name of a file containing a list of numbers and the number of threads for the Worker program to create. (The number of threads should be an integer between two and 20.) 2. Create a ProcessBuilder object that will act as a template for the Worker process. The template should run the Worker program (using the java virtual machine command "java") with the command line arguments described below for the Worker.java program. 3. Start a new Worker process using the ProcessBuilder. 4. Tie the output of Worker program to the Starter program using the Process class method getInputStream() on the Worker process you created in step 3 and read the results that the Work program writes and display them. The Worker.java program: The second program you will write will be called Worker.java, again with no package.
2)The Worker program will perform the following tasks in the main method:
1. Get the command line arguments for Worker: the number of threads to create and the filename to read, from the main method parameter and place them in variables. 2. Open the file for reading and then, read and store the number in the file. You will probably find it easiest to use an ArrayList to store the numbers. 3. Create the specified number of threads, using the Runnable class you write and create an double array with an element for each thread to store its results. 4. Start the thread you created. 5. Using the Thread join() method, wait for each of the thread to complete. 6. Sum the values in the results array and display the sum of the numbers that were read. You also have to write a class that implements the Runnable interface that the main method uses to create the threads. You should make this class an inner class of the Worker class. This will allow the Runnable class to have access to the static variables of the Worker class, thereby allows the running threads access to threse variables as shared data. The three pieces of shared data needed are the total number of threads, the list of numbers and the result array. The Runnable class should have a private instance variable which will hold the index of the thread object, which will be a number between 0 and the number of threads minus one. This index is assigned by the main method when it create the Runnable class for each thread. The index will be used by the thread object to write its final result to the proper element of the shared result array and to partition the numbers in the numbers list.
The Runnable class should be written so that it does the following:
1. Based on its index, the thread decides which of the numbers it will process. If the number of threads is T and the size of the numbers list is N , then thread i will process elements iN/T through ((i+1)N/T) 1 . For instance, if T is 4 and N is 39, then thread 0 will process elements 0 through 8, thread 1 will process elements 9 through 17, thread 2 will process elements 18 through 26, and thread 3 will process elements 28 through 39. Note that the last thread may process more elements than the others. 2. Compute the average of the numbers it is to process. 3. Store the average into the result array element using the thread index.
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