Assignment-05
Name: Harsh Sonigara
Roll No: 2213220
Class: SY-4 Batch A
Subject: JPL
Assignment Title: Multithreading in java
Aim: Write a java program that implements a multi-thread application that has three
threads. First thread generates a random integer every 1 second and if the value is even,
the second thread computes the square of the number and prints. If the value is odd,
the third thread will print the value of the cube of the number.
Pre-Requisites: C/C++
Objective: To achieve multithreading in java by implementing Runnable Interface or
extending the Thread class.
Outcomes:
Theory:
Multithreading is a Java feature that allows concurrent execution of two or more parts of
a program for maximum utilization of CPU. Each part of such program is called a thread.
So, threads are light-weight processes within a process.
Threads can be created by using two mechanisms :
1. Extending the Thread class
2. Implementing the Runnable Interface
Thread creation by extending the Thread class
We create a class that extends the java.lang.Thread class. This class overrides the run()
method available in the Thread class. A thread begins its life inside run() method. We
create an object of our new class and call start() method to start the execution of a
thread. Start() invokes the run() method on the Thread object.
// Java code for thread creation by extending
// the Thread class
class MultithreadingDemo extends Thread {
public void run()
try {
// Displaying the thread that is running
System.out.println("Thread " + Thread.currentThread().getId() + " is
running");
catch (Exception e) {
// Throwing an exception
System.out.println("Exception is caught");
// Main Class
public class Multithread {
public static void main(String[] args)
int n = 8; // Number of threads
for (int i = 0; i < n; i++) {
MultithreadingDemo object = new MultithreadingDemo();
object.start();
Output:
Thread 15 is running
Thread 14 is running
Thread 16 is running
Thread 12 is running
Thread 11 is running
Thread 13 is running
Thread 18 is running
Thread 17 is running
Thread creation by implementing the Runnable Interface
We create a new class which implements java.lang.Runnable interface and override run()
method. Then we instantiate a Thread object and call start() method on this object.
// Java code for thread creation by implementing
// the Runnable Interface
class MultithreadingDemo implements Runnable {
public void run()
try {
// Displaying the thread that is running
System.out.println( "Thread " + Thread.currentThread().getId()
+ " is running");
catch (Exception e) {
// Throwing an exception
System.out.println("Exception is caught");
// Main Class
class Multithread {
public static void main(String[] args)
int n = 8; // Number of threads
for (int i = 0; i < n; i++) {
Thread object = new Thread(new MultithreadingDemo());
object.start();
Output
Thread 13 is running
Thread 11 is running
Thread 12 is running
Thread 15 is running
Thread 14 is running
Thread 18 is running
Thread 17 is running
Thread 16 is running
Algorithm/Steps:
1.Start the program
2.Create a class with the name “even implements Runnable” and “odd
implementsRunnable”.
3.Create thread objects and Random class objects.
4.Pass the objects of our class to the Thread class.
5. Call the start method.
Conclusion:
Hence, we studied multithreading in java.
CODE:
/*Problem Statement: Write a Java program that implements a multi-thread application that
has three threads. First thread generates a random integer every 1 second and if the value is
even, the second thread computers the square of the number and prints. If the value is odd,
third thread will print the value of the cube of the number.*/
//@Author:Harsh Sonigara
//Roll No: 2213220
//Class: SY-4 Batch A
//CODE:
import java.util.Random;
class RandomNumberThread extends Thread {
public void run() {
Random random = new Random();
for (int i = 0; i < 10; i++) {
int randomInteger = random.nextInt(100);
System.out.println("Random Integer generated : " + randomInteger);
if((randomInteger%2) == 0) {
SquareThread sThread = new SquareThread(randomInteger);
sThread.start();
else {
CubeThread cThread = new CubeThread(randomInteger);
cThread.start();
try {
Thread.sleep(1000);
catch (InterruptedException ex) {
System.out.println(ex);
}
}
class SquareThread extends Thread {
int number;
SquareThread(int randomNumbern) {
number = randomNumbern;
public void run() {
System.out.println("Square of " + number + " = " + (number * number));
class CubeThread extends Thread {
int number;
CubeThread(int randomNumber) {
number = randomNumber;
public void run() {
System.out.println("Cube of " + number + " = " + number * number * number);
public class Lab_5 {
public static void main(String args[]) {
RandomNumberThread rnThread = new RandomNumberThread();
rnThread.start();
OUTPUT: