Question: Write a Java program that creates several threads, according to the following scenario: The initial thread will be called the main thread (M) The
Write a Java program that creates several threads, according to the following scenario: The initial thread will be called the main thread (M) The main thread (M) creates and starts two worker threads; each worker thread will work on its task The main thread (M) joins the two worker threads in the end and computes the final result The goal of this program is to find all the Vampire numbers in the interval [100000, 999999]. To achieve this goal we will scan all the integer numbers from 100000 to 999999 and for each of these numbers we must perform a test to verify if that number is a Vampire number or not. In order to solve this problem faster, (assuming we have at least two processors on our system) we will divide the work between the two worker threads: on worker will scan and verify all the even numbers and the other worker will scan and verify all the odd numbers in the interval. More precisely, the following list describes the behavior of each thread: 1. The main thread (M) creates the two worker threads, starts them and joins them in the end. After that, the main thread will compute and display the TOTAL number of Vampire numbers found in the interval [100000, 999999] as "The TOTAL number of Vampire numbers found is: ..." (the ellipsis stand for the actual number) 2. The first worker will scan and verify all the even numbers in the interval [100000, 999999]; whenever a new Vampire number is found, it will be displayed like this: "First worker found: ..." (the ellipsis stand for the actual number); a counter will be incremented every time a new Vampire number was found, and in the end the total number of Vampire numbers found will be displayed: "First worker found ... Vampire numbers" (the ellipsis stand for the actual number) 3. The second worker will scan and verify all the odd numbers in the interval [100000, 999999]; whenever a new Vampire number is found, it will be displayed like this: "Second worker found: ..." (the ellipsis stand for the actual number); a counter will be incremented every time a new Vampire number was found, and in the end the total number of Vampire numbers found will be displayed: "Second worker found ... Vampire numbers" (the ellipsis stand for the actual number) HINTS: The Vampire numbers are described in detail here: https://en.wikipedia.org/wiki/Vampire_number In the end, the worker threads must communicate their counters to the main thread, in order to compute and display the TOTAL number of Vampire numbers in the interval Work on your computer or online using https://replit.com DELIVERABLES: The source code for the Java program, stored in the text file "hw3.java" A screenshot showing the final results of your program's execution, stored in a graphic file like "hw3.png" or "hw3.gif" or "hw3.pdf", etc. E
Step by Step Solution
There are 3 Steps involved in it
Sure heres a Java program that implements the scenario you described using threads t... View full answer
Get step-by-step solutions from verified subject matter experts
