Answer:
Following are the code to the given question:
import java.util.concurrent.*; //import package
public class Threads //defining a class Threads
{
private Integer s = new Integer(0);//defining Integer class object
public synchronized static void main(String[] args)//defining main method
{
Threads t = new Threads();//defining threads class object
System.out.println("What is sum ?" + t.s);//print value with message
}
Threads()//defining default constructor
{
ExecutorService exe = Executors.newFixedThreadPool(1000);//defining ExecutorService class object
System.out.println("With SYNCHRONIZATION........");//print message
for(int i = 1; i <= 1000; i++)//defining a for loop
{
exe.execute(new SumTask2());//calling execute method
System.out.println("At Thread " + i +" Sum= " + s + " , ");//print message with value
}
exe.shutdown();//calling shutdown method
while(!exe.isTerminated())//defining while loop that calls isTerminated method
{
}
}
class SumTask2 implements Runnable//calling SumTask2 that inherits Runnable class
{
public synchronized void run()//defining method run
{
int value = s.intValue() + 1;//defining variable value that calls intvalue which is increment by 1
s = new Integer(value);//use s to hold value
}
}
}
Output:
Please find the attached file.
Step-by-step explanation:
In this code, a Threads class is defined in which an integer class object and the main method is declared that creates the Threads class object and calls its values.
Outside the method, the default constructor is declared that creates the "ExecutorService" and prints its message, and use a for loop that calls execute method which prints its value with the message.
In the class, a while loop is declared that calls "isTerminated" method, and outside the class "SumTask2" that inherits Runnable class and defined the run method and define a variable "value" that calls "intvalue" method which is increment by 1 and define s variable that holds method value.