This document discusses multi-threading in Java. It defines multi-processing and multi-threading, and explains that multi-threading allows multiple threads to execute simultaneously for faster program execution. The document covers the life cycle of a thread, how to create and name threads, set thread priority, and use sleep and join methods. It provides an example of a program that calculates the sum and product of two numbers using threads.
2. Topics in this slide
Multi Processing
Multi Threading
Life Cycle of Thread
How to create Thread
Some Methods assosiated with Thread
getName(),setName()
getPriority(),set Priority()
sleep(),join()
problem
4. • Multi Processing= It is process based Multi
Tasking and it is OS level Multi Tasking.
• When two independent tasks are performed
simultaneously on system is called Multiprocessing
• Example=In a software industry employees are
used to work by listening to music.
• In this case work may be writing code, designing
reports, sending mail, etc but these Along with music
is running parallelly in background.
5. Multi Threading=Multi Threading is the program level Multi Tasking
It is the process of executing multiple threads simultaneously.
Multi Threading is used for execution of program in less time.
Defaultly Main Thread is responsible for execution of entire code unless the sub Threads are created
6. Public class Main{
Public static void main(String[] args){
Statement 1
Statement 2
Statement 3
Statement 4
}
}
In this sample code no
sub threads are created so, the
entire code is executed by Main
thread
Let the time taken by the execution
is 4 sec
Public class Main{
Public static void main(String[] args){
Statement 1-----------t1 executes statement1
Statement 2------------t2 executes statement 2
Statement 3------------t3 executes statement 3
Statement 4-------------t4 executes statement 4
t1,t2,t3,t4;
}
}
In this sample code 4 sub threads are
created(t1,t2,t3,t4) so, the entire code is
executed by Main thread as well as sub
threads
Let the time taken by the execution is less than
the previous case.
8. • Threads can be created in two ways
• Extending Thread class
• Implementing Runnable Interface
• We cannot interpret the order of flow of thread
execution
9. Thread creation in Java
public class Main extends Thread{
//@ overrided method
public void run(){
System.out.println("Thread name is "+getName());
}
public static void main(String[] args){
Main t1=new Main(); //Thread t1 is created
Main t2=new Main(); // Thread t2 is created
t1.start();
t2.start();
}
}
getName() method returns the name of the Thread
start() method calls the run method
10. How to set name to the Thread ?
If you want to know which specific thread is executing then you need to set name for the thread. This helps you
to understand which thread is executing.
public class Main extends Thread{
//@ overrided method
public void run(){
System.out.println("Thread name is "+getName());
}
public static void main(String[] args){
Main t1=new Main(); //Thread t1 is created
Main t2=new Main(); // Thread t2 is created
t1.setName("CSE");
t2.setName("ECE");
t1.start();
t2.start();
}
}
12. How to know the priority of Thread ?
public class Main extends Thread{
//@ overrided method
public void run(){
System.out.println("Thread name is "+getName()+" priority is "+getPriority());
}
public static void main(String[] args){
Main t1=new Main(); //Thread t1 is created
Main t2=new Main(); // Thread t2 is created
t1.setName("CSE");
t2.setName("ECE");
t1.start();
t2.start();
}
}
getPriority() method returns the priority of thread
13. How to set priority to Thread ?
public class Main extends Thread{
//@ overrided method
public void run(){
System.out.println("Thread name is "+getName()+" priority is "+getPriority());
}
public static void main(String[] args){
Main t1=new Main(); //Thread t1 is created
Main t2=new Main(); // Thread t2 is created
t1.setPriority(Thread.MIN_PRIORITY);//Priority is 1
t2.setPriority(Thread.MAX_PRIORITY);//Priority is 10
t1.setName("CSE");
t2.setName("ECE");
t1.start();
t2.start();
}
}
setPriority(Thread.(MAX or MIN or NORM)_PRIORITY) method used to set priority to thread
14. • Sleep()
• The sleep() method of Thread class is used to sleep a thread for the specified amount of
time.
15. • public class Main extends Thread{
• //@ overrided method
• public void run(){
• try{
• for(int i=0;i<5;i=i+1){
• sleep(1000) //1000ms=1s
• System.out.println("Thread name is "+getName());
• }
• }
• catch(Exception e){
• }
• }
• public static void main(String[] args){
• Main t1=new Main(); //Thread t1 is created
• t1.start();
• }
• }
18. Without join() method
public class Main extends Thread
{
public void run(){
for(int i=0;i<5;i=i+1){
System.out.println(Thread.currentThread().getName()+" "+i);
}
}
public static void main(String[] args) {
Main t1=new Main();
Main t2=new Main();
t1.start();
t2.start();
}
}
19. With join() method
public class Main extends Thread
{
public void run(){
for(int i=0;i<5;i=i+1){
System.out.println(Thread.currentThread().getName()+" "+i);
}
}
public static void main(String[] args) {
Main t1=new Main();
Main t2=new Main();
t1.start();
try{
t1.join();
}catch(Exception e){
}
t2.start();
}
20. Problem
Write a program for addition of two numbers and product of two numbers using Threads
Expaination
Sum(a,b) performed by thread t1
Product(a,b) performed by thread t2
Main thread displays the sum and product value of two numbers
21. class Number{
int a;
int b;
int s;
int p;
Number(int a,int b){
this.a=a;
this.b=b;
}
public void sum(){
s=a+b;
}
public void multiply(){
p=a*b;
}
public void display(){
System.out.println("sum is "+s);
System.out.println("product is "+p);
}
}
22. class ThreadA extends Thread{
Number num;
ThreadA(Number num){
this.num=num;
}
}
public class Main{
public static void main(String[] args){
Number num=new Number(1,2);
ThreadA t1=new ThreadA(num){
public void run(){
num.sum();
}
};
ThreadA t2=new ThreadA(num){
public void run(){
num.multiply();
}
};
t1.start();
t2.start();
try{
t2.join();
}catch(Exception e){
}
num.display();
}
}