SlideShare a Scribd company logo
1 of 41
Amity School of Engineering & Technology
Threads
Amity School of Engineering & Technology
Multithreading in Java
• Multithreading in java is a process of executing multiple threads
simultaneously.
• Thread is basically a lightweight sub-process, a smallest unit of
processing.
• Multiprocessing and multithreading, both are used to achieve
multitasking.
• But we use multithreading than multiprocessing because threads
share a common memory area. They don't allocate separate
memory area so saves memory, and context-switching between the
threads takes less time than process.
• Java Multithreading is mostly used in games, animation etc.
Amity School of Engineering & Technology
Advantages of Java Multithreading
1) It doesn't block the user because threads are
independent and you can perform multiple operations at
same time.
2) You can perform many operations together so it
saves time.
3) Threads are independent so it doesn't affect other
threads if exception occur in a single thread.
Amity School of Engineering & Technology
Multitasking
Multitasking is a process of executing multiple tasks
simultaneously. We use multitasking to utilize the CPU.
Multitasking can be achieved by two ways:
1.Process-based Multitasking(Multiprocessing)
2.Thread-based Multitasking(Multithreading)
Amity School of Engineering & Technology
1) Process-based Multitasking (Multiprocessing)
1. Each process have its own address in memory i.e. each process
allocates separate memory area.
2. Process is heavyweight.
3. Cost of communication between the process is high.
4. Switching from one process to another require some time for
saving and loading registers, memory maps, updating lists etc.
2) Thread-based Multitasking (Multithreading)
1. Threads share the same address space.
2. Thread is lightweight.
3. Cost of communication between the thread is low.
Amity School of Engineering & Technology
What is Thread in java
A thread is a lightweight sub process, a smallest unit of processing.
Threads are independent, if there occurs exception in one thread, it
doesn't affect other threads. It shares a common memory area.
As shown in the above figure, thread is executed inside the process. There is
context-switching between the threads. There can be multiple processes inside the
OS and one process can have multiple threads.
Amity School of Engineering & Technology
Per process items | Per thread items
---------------------------------|-----------------
Address space | Program counter
Global variables | Registers
Open files | Stack
Child processes | State
Pending alarms |
Signals and signal handlers |
Accounting information |
Amity School of Engineering & Technology
Life cycle of a Thread (Thread States)
A thread can be in one of the five states. According to sun, there is
only 4 states in thread life cycle in java new, runnable, non-
runnable and terminated. There is no running state.
But for better understanding the threads, we are explaining it in the 5
states.
The life cycle of the thread in java is controlled by JVM. The java
thread states are as follows:
1 New
2 Runnable
3 Running
4 Non-Runnable (Blocked)
5 Terminated
Amity School of Engineering & Technology
Amity School of Engineering & Technology
1) New
The thread is in new state if you create an instance of Thread class
but before the invocation of start() method.
2) Runnable
The thread is in runnable state after invocation of start() method, but
the thread scheduler has not selected it to be the running thread.
3) Running
The thread is in running state if the thread scheduler has selected it.
4) Non-Runnable (Blocked)
This is the state when the thread is still alive, but is currently not
eligible to run.
5) Terminated
A thread is in terminated or dead state when its run() method exits.
Amity School of Engineering & Technology
How to create thread
There are two ways to create a thread:
1 By extending Thread class
2 By implementing Runnable interface.
Amity School of Engineering & Technology
By extending thread class
• The class should extend Java Thread class.
• The class should override the run() method.
• The functionality that is expected by the Thread to be executed is
written in the run() method.
• void start(): Creates a new thread and makes it runnable.
• void run(): The new thread begins its life inside this method.
Amity School of Engineering & Technology
Java Thread Example by extending Thread class
public class MyThread extends Thread {
public void run(){
System.out.println("thread is running...");
}
public static void main(String[] args) {
MyThread obj = new MyThread();
obj.start();
}
Amity School of Engineering & Technology
By Implementing Runnable interface
• The class should implement the Runnable interface
• The class should implement the run() method in the Runnable
interface
• The functionality that is expected by the Thread to be executed is
put in the run() method
Amity School of Engineering & Technology
Example:
public class MyThread1 implements Runnable {
public void run(){
System.out.println("thread is running..");
}
public static void main(String[] args) {
Thread t = new Thread(new MyThread1());
t.start();
}
Amity School of Engineering & Technology
Extends Thread class vs Implements
Runnable Interface?
• Extending the Thread class will make your class unable to extend
other classes, because of the single inheritance feature in JAVA.
• However, this will give you a simpler code structure. If you
implement Runnable, you can gain better object-oriented design and
consistency and also avoid the single inheritance problems.
• If you just want to achieve basic functionality of a thread you can
simply implement Runnable interface and override run() method.
• But if you want to do something serious with thread object as it has
other methods like suspend(), resume(), ..etc which are not available
in Runnable interface then you may prefer to extend the Thread
class.
Amity School of Engineering & Technology
Ending Thread
A Thread ends due to the following reasons:
• The thread ends when it comes when the run() method
finishes its execution.
• When the thread throws an Exception or Error that is not
being caught in the program.
• Java program completes or ends.
• Another thread calls stop() methods.
Amity School of Engineering & Technology
Synchronization of Threads
• In many cases concurrently running threads share data and
two threads try to do operations on the same variables at the
same time. This often results in corrupt data as two threads
try to operate on the same data.
• A popular solution is to provide some kind of lock
primitive. Only one thread can acquire a particular lock at any
particular time. This can be achieved by using a keyword
“synchronized” .
• By using the synchronize only one thread can access the
method at a time and a second call will be blocked until the
first call returns or wait() is called inside the synchronized
method.
Amity School of Engineering & Technology
Thread Scheduler in Java
Thread scheduler in java is the part of the JVM that
decides which thread should run.
There is no guarantee that which runnable thread will be
chosen to run by the thread scheduler.
Only one thread at a time can run in a single process.
The thread scheduler mainly uses preemptive or time
slicing scheduling to schedule the threads.
Amity School of Engineering & Technology
Difference between preemptive scheduling and time slicing
Under preemptive scheduling, the highest priority task
executes until it enters the waiting or dead states or a
higher priority task comes into existence.
Under time slicing, a task executes for a predefined slice
of time and then reenters the pool of ready tasks. The
scheduler then determines which task should execute
next, based on priority and other factors.
Amity School of Engineering & Technology
Sleep method in java
• The sleep() method of Thread class is used to sleep a
thread for the specified amount of time.
Syntax of sleep() method in java
• The Thread class provides methods for sleeping a thread:
public static void sleep(long miliseconds) throws InterruptedException
Amity School of Engineering & Technology
Example of sleep method in java
class TestSleepMethod1 extends Thread{
public void run(){
for(int i=1;i<5;i++){
try { Thread.sleep(500); } catch(InterruptedException e)
{System.out.println(e); }
System.out.println(i);
}
}
public static void main(String args[]){
TestSleepMethod1 t1=new TestSleepMethod1();
TestSleepMethod1 t2=new TestSleepMethod1();
t1.start();
t2.start();
}
}
Amity School of Engineering & Technology
Can we start a thread twice
public class TestThreadTwice1 extends Thread{
public void run(){
System.out.println("running...");
}
public static void main(String args[]){
TestThreadTwice1 t1=new TestThreadTwice1();
t1.start();
t1.start();
}
}
Amity School of Engineering & Technology
What if we call run() method directly instead start() method?
class TestCallRun1 extends Thread{
public void run(){
System.out.println("running...");
}
public static void main(String args[]){
TestCallRun1 t1=new TestCallRun1();
t1.run();//fine, but does not start a separate call stack
}
}
Amity School of Engineering & Technology
class TestCallRun2 extends Thread{
public void run(){
for(int i=1;i<5;i++){
try{Thread.sleep(500);}catch(InterruptedException e){System.out.println(e);}
System.out.println(i);
}
}
public static void main(String args[]){
TestCallRun2 t1=new TestCallRun2();
TestCallRun2 t2=new TestCallRun2();
t1.run();
t2.run();
}
}
Problem if you direct call run() method
Amity School of Engineering & Technology
The join() method
• The join() method waits for a thread to die. In other words, it causes
the currently running threads to stop executing until the thread it
joins with completes its task.
Syntax:
• public void join() throws InterruptedException
• public void join(long milliseconds) throws InterruptedException
Amity School of Engineering & Technology
Example of join() method
class TestJoinMethod1 extends Thread{
public void run(){
for(int i=1;i<=5;i++){
try{
Thread.sleep(500);
}catch(Exception e){System.out.println(e);}
System.out.println(i);
}
}
public static void main(String args[]){
TestJoinMethod1 t1=new TestJoinMethod1();
TestJoinMethod1 t2=new TestJoinMethod1();
TestJoinMethod1 t3=new TestJoinMethod1();
t1.start();
try{
t1.join();
}catch(Exception e){System.out.println(e);}
t2.start();
t3.start();
}
}
Amity School of Engineering & Technology
Example of join(long miliseconds) method
class TestJoinMethod2 extends Thread{
public void run(){
for(int i=1;i<=5;i++){
try{
Thread.sleep(500);
}catch(Exception e){System.out.println(e);}
System.out.println(i);
}
}
public static void main(String args[]){
TestJoinMethod2 t1=new TestJoinMethod2();
TestJoinMethod2 t2=new TestJoinMethod2();
TestJoinMethod2 t3=new TestJoinMethod2();
t1.start();
try{
t1.join(1500);
}catch(Exception e){System.out.println(e);}
t2.start();
t3.start();
}
}
Amity School of Engineering & Technology
getName(),setName(String) and getId() method:
class TestJoinMethod3 extends Thread{
public void run(){
System.out.println("running...");
}
public static void main(String args[]){
TestJoinMethod3 t1=new TestJoinMethod3();
TestJoinMethod3 t2=new TestJoinMethod3();
System.out.println("Name of t1:"+t1.getName());
System.out.println("Name of t2:"+t2.getName());
System.out.println("id of t1:"+t1.getId());
t1.start();
t2.start();
t1.setName("Sonoo Jaiswal");
System.out.println("After changing name of t1:"+t1.getName());
} }
public String getName()
public void setName(String name)
public long getId()
Amity School of Engineering & Technology
The currentThread() method:
The currentThread() method returns a reference to the currently executing thread object.
Syntax:
public static Thread currentThread()
class TestJoinMethod4 extends Thread{
public void run(){
System.out.println(Thread.currentThread().getName());
}
}
public static void main(String args[]){
TestJoinMethod4 t1=new TestJoinMethod4();
TestJoinMethod4 t2=new TestJoinMethod4();
t1.start();
t2.start();
}
}
Amity School of Engineering & Technology
Naming Thread and Current Thread
Naming Thread
• The Thread class provides methods to change and get the name of a
thread. By default, each thread has a name i.e. thread-0, thread-1 and so
on. We can change the name of the thread by using setName() method.
The syntax of setName() and getName() methods are given below:
• public String getName(): is used to return the name of a thread.
• public void setName(String name): is used to change the name of a
thread.
Amity School of Engineering & Technology
class TestMultiNaming1 extends Thread{
public void run(){
System.out.println("running...");
}
public static void main(String args[]){
TestMultiNaming1 t1=new TestMultiNaming1();
TestMultiNaming1 t2=new TestMultiNaming1();
System.out.println("Name of t1:"+t1.getName());
System.out.println("Name of t2:"+t2.getName());
t1.start();
t2.start();
t1.setName("Sonoo Jaiswal");
System.out.println("After changing name of t1:"+t1.getName());
}
}
Amity School of Engineering & Technology
State of thread
import java.lang.*;
public class Threadstate implements Runnable {
public void run() { // returns the state of this thread
Thread.State state = Thread.currentThread().getState();
System.out.println(Thread.currentThread().getName());
System.out.println("state = " + state);
}
public static void main(String args[]) {
Thread t = new Thread(new Threadstate()); // this will call run()
function t.start();
}
}
Amity School of Engineering & Technology
Priority of a Thread (Thread Priority):
• Each thread have a priority. Priorities are represented by a number
between 1 and 10. In most cases, thread schedular schedules the
threads according to their priority (known as preemptive scheduling).
But it is not guaranteed because it depends on JVM specification
that which scheduling it chooses.
3 constants defiend in Thread class:
• public static int MIN_PRIORITY
• public static int NORM_PRIORITY
• public static int MAX_PRIORITY
Default priority of a thread is 5 (NORM_PRIORITY). The value of
MIN_PRIORITY is 1 and the value of MAX_PRIORITY is 10.
Amity School of Engineering & Technology
class TestMultiPriority1 extends Thread{
public void run(){
System.out.println("running thread name is:"+Thread.currentThread().getName());
System.out.println("running thread priority is:"+Thread.currentThread().getPriority());
}
public static void main(String args[]){
TestMultiPriority1 m1=new TestMultiPriority1();
TestMultiPriority1 m2=new TestMultiPriority1();
m1.setPriority(Thread.MIN_PRIORITY);
m2.setPriority(Thread.MAX_PRIORITY);
m1.start();
m2.start();
}
}
Amity School of Engineering & Technology
Daemon Thread in Java
Daemon thread in java is a service provider thread that provides services
to the user thread. Its life depend on the mercy of user threads i.e. when all
the user threads dies, JVM terminates this thread automatically.
There are many java daemon threads running automatically e.g. gc, finalizer
etc.
You can see all the detail by typing the jconsole in the command prompt.
The jconsole tool provides information about the loaded classes, memory
usage, running threads etc.
Points to remember for Daemon Thread in Java
• It provides services to user threads for background supporting tasks. It has
no role in life than to serve user threads.
• Its life depends on user threads.
• It is a low priority thread.
Amity School of Engineering & Technology
Methods for Java Daemon thread by Thread class
The java.lang.Thread class provides two methods for java daemon thread.
1) public void setDaemon(boolean status)
is used to mark the current thread as daemon thread or user thread.
2) public boolean isDaemon()
is used to check that current is daemon.
Amity School of Engineering & Technology
public class TestDaemonThread1 extends Thread{
public void run(){
if(Thread.currentThread().isDaemon()){//checking for daemon thread
System.out.println("daemon thread work");
}
else{
System.out.println("user thread work");
}
}
public static void main(String[] args){
TestDaemonThread1 t1=new TestDaemonThread1();//creating thread
TestDaemonThread1 t2=new TestDaemonThread1();
TestDaemonThread1 t3=new TestDaemonThread1();
t1.setDaemon(true);//now t1 is daemon thread
t1.start();//starting threads
t2.start();
t3.start();
}
}
Amity School of Engineering & Technology
If we make a user thread as Daemon, it must not be started
otherwise it will throw IllegalThreadStateException.
class TestDaemonThread2 extends Thread{
public void run(){
System.out.println("Name: "+Thread.currentThread().getName());
System.out.println("Daemon: "+Thread.currentThread().isDaemon());
}
public static void main(String[] args){
TestDaemonThread2 t1=new TestDaemonThread2();
TestDaemonThread2 t2=new TestDaemonThread2();
t1.start();
t1.setDaemon(true);//will throw exception here
t2.start();
}
}
Amity School of Engineering & Technology
Controling the main thread
class CurrentThreadDemo {
public static void main(String args[]) {
Thread t = Thread.currentThread();
System.out.println("Current thread: " + t);
// change the name of the thread
t.setName("My Thread");
System.out.println("After name change: " + t);
try {
for(int n = 5; n > 0; n--)
{
System.out.println(n);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
System.out.println("Main thread interrupted");
}
}
}
Amity School of Engineering & Technology
Thanks

More Related Content

What's hot (20)

07 java collection
07 java collection07 java collection
07 java collection
 
Java And Multithreading
Java And MultithreadingJava And Multithreading
Java And Multithreading
 
String and string buffer
String and string bufferString and string buffer
String and string buffer
 
Completable future
Completable futureCompletable future
Completable future
 
Threads 04 Variáveis atômicas
Threads 04 Variáveis atômicasThreads 04 Variáveis atômicas
Threads 04 Variáveis atômicas
 
Thread model in java
Thread model in javaThread model in java
Thread model in java
 
Jsp presentation
Jsp presentationJsp presentation
Jsp presentation
 
Java loops
Java loopsJava loops
Java loops
 
Java loops for, while and do...while
Java loops   for, while and do...whileJava loops   for, while and do...while
Java loops for, while and do...while
 
Spring jdbc
Spring jdbcSpring jdbc
Spring jdbc
 
Java string handling
Java string handlingJava string handling
Java string handling
 
Collections Api - Java
Collections Api - JavaCollections Api - Java
Collections Api - Java
 
Java Multithreading
Java MultithreadingJava Multithreading
Java Multithreading
 
Fast as C: How to Write Really Terrible Java
Fast as C: How to Write Really Terrible JavaFast as C: How to Write Really Terrible Java
Fast as C: How to Write Really Terrible Java
 
Spring Framework - AOP
Spring Framework - AOPSpring Framework - AOP
Spring Framework - AOP
 
Arrays in java
Arrays in javaArrays in java
Arrays in java
 
Java I/O
Java I/OJava I/O
Java I/O
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
 
String, string builder, string buffer
String, string builder, string bufferString, string builder, string buffer
String, string builder, string buffer
 
Java 8 lambda
Java 8 lambdaJava 8 lambda
Java 8 lambda
 

Similar to 1.17 Thread in java.pptx

U4 JAVA.pptx
U4 JAVA.pptxU4 JAVA.pptx
U4 JAVA.pptxmadan r
 
Multithreading in Java
Multithreading in JavaMultithreading in Java
Multithreading in JavaJayant Dalvi
 
OOPS object oriented programming UNIT-4.pptx
OOPS object oriented programming UNIT-4.pptxOOPS object oriented programming UNIT-4.pptx
OOPS object oriented programming UNIT-4.pptxArulmozhivarman8
 
Multi threading
Multi threadingMulti threading
Multi threadinggndu
 
MULTI THREADING IN JAVA
MULTI THREADING IN JAVAMULTI THREADING IN JAVA
MULTI THREADING IN JAVAVINOTH R
 
BCA MultiThreading.ppt
BCA MultiThreading.pptBCA MultiThreading.ppt
BCA MultiThreading.pptsarthakgithub
 
07. Parbdhdjdjdjsjsjdjjdjdjjkdkkdkdkt.pptx
07. Parbdhdjdjdjsjsjdjjdjdjjkdkkdkdkt.pptx07. Parbdhdjdjdjsjsjdjjdjdjjkdkkdkdkt.pptx
07. Parbdhdjdjdjsjsjdjjdjdjjkdkkdkdkt.pptxnimbalkarvikram966
 
Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in javaKavitha713564
 
Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in javaKavitha713564
 
Multithreading Introduction and Lifecyle of thread
Multithreading Introduction and Lifecyle of threadMultithreading Introduction and Lifecyle of thread
Multithreading Introduction and Lifecyle of threadKartik Dube
 
Multithreading in Java Object Oriented Programming language
Multithreading in Java Object Oriented Programming languageMultithreading in Java Object Oriented Programming language
Multithreading in Java Object Oriented Programming languagearnavytstudio2814
 
Threads in java, Multitasking and Multithreading
Threads in java, Multitasking and MultithreadingThreads in java, Multitasking and Multithreading
Threads in java, Multitasking and Multithreadingssusere538f7
 
Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in javaMonika Mishra
 
Unit No 4 Exception Handling and Multithreading.pptx
Unit No 4 Exception Handling and Multithreading.pptxUnit No 4 Exception Handling and Multithreading.pptx
Unit No 4 Exception Handling and Multithreading.pptxDrYogeshDeshmukh1
 
Multithreading programming in java
Multithreading programming in javaMultithreading programming in java
Multithreading programming in javaElizabeth alexander
 

Similar to 1.17 Thread in java.pptx (20)

U4 JAVA.pptx
U4 JAVA.pptxU4 JAVA.pptx
U4 JAVA.pptx
 
Threads in Java
Threads in JavaThreads in Java
Threads in Java
 
Multithreading in Java
Multithreading in JavaMultithreading in Java
Multithreading in Java
 
OOPS object oriented programming UNIT-4.pptx
OOPS object oriented programming UNIT-4.pptxOOPS object oriented programming UNIT-4.pptx
OOPS object oriented programming UNIT-4.pptx
 
Multi threading
Multi threadingMulti threading
Multi threading
 
MULTI THREADING IN JAVA
MULTI THREADING IN JAVAMULTI THREADING IN JAVA
MULTI THREADING IN JAVA
 
BCA MultiThreading.ppt
BCA MultiThreading.pptBCA MultiThreading.ppt
BCA MultiThreading.ppt
 
07. Parbdhdjdjdjsjsjdjjdjdjjkdkkdkdkt.pptx
07. Parbdhdjdjdjsjsjdjjdjdjjkdkkdkdkt.pptx07. Parbdhdjdjdjsjsjdjjdjdjjkdkkdkdkt.pptx
07. Parbdhdjdjdjsjsjdjjdjdjjkdkkdkdkt.pptx
 
Slide 7 Thread-1.pptx
Slide 7 Thread-1.pptxSlide 7 Thread-1.pptx
Slide 7 Thread-1.pptx
 
Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in java
 
Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in java
 
Multithreading Introduction and Lifecyle of thread
Multithreading Introduction and Lifecyle of threadMultithreading Introduction and Lifecyle of thread
Multithreading Introduction and Lifecyle of thread
 
Multithreading in Java Object Oriented Programming language
Multithreading in Java Object Oriented Programming languageMultithreading in Java Object Oriented Programming language
Multithreading in Java Object Oriented Programming language
 
Chap2 2 1
Chap2 2 1Chap2 2 1
Chap2 2 1
 
Java threading
Java threadingJava threading
Java threading
 
Threads in java, Multitasking and Multithreading
Threads in java, Multitasking and MultithreadingThreads in java, Multitasking and Multithreading
Threads in java, Multitasking and Multithreading
 
Java unit 12
Java unit 12Java unit 12
Java unit 12
 
Multithreading in java
Multithreading in javaMultithreading in java
Multithreading in java
 
Unit No 4 Exception Handling and Multithreading.pptx
Unit No 4 Exception Handling and Multithreading.pptxUnit No 4 Exception Handling and Multithreading.pptx
Unit No 4 Exception Handling and Multithreading.pptx
 
Multithreading programming in java
Multithreading programming in javaMultithreading programming in java
Multithreading programming in java
 

Recently uploaded

Churning of Butter, Factors affecting .
Churning of Butter, Factors affecting  .Churning of Butter, Factors affecting  .
Churning of Butter, Factors affecting .Satyam Kumar
 
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETEINFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETEroselinkalist12
 
Concrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptxConcrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptxKartikeyaDwivedi3
 
Artificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxArtificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxbritheesh05
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile servicerehmti665
 
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfCCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfAsst.prof M.Gokilavani
 
Heart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptxHeart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptxPoojaBan
 
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)dollysharma2066
 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionDr.Costas Sachpazis
 
Application of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptxApplication of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptx959SahilShah
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024hassan khalil
 
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...srsj9000
 
GDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentationGDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentationGDSCAESB
 
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)Dr SOUNDIRARAJ N
 
complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...asadnawaz62
 
Effects of rheological properties on mixing
Effects of rheological properties on mixingEffects of rheological properties on mixing
Effects of rheological properties on mixingviprabot1
 
Call Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call GirlsCall Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call Girlsssuser7cb4ff
 
DATA ANALYTICS PPT definition usage example
DATA ANALYTICS PPT definition usage exampleDATA ANALYTICS PPT definition usage example
DATA ANALYTICS PPT definition usage examplePragyanshuParadkar1
 

Recently uploaded (20)

Churning of Butter, Factors affecting .
Churning of Butter, Factors affecting  .Churning of Butter, Factors affecting  .
Churning of Butter, Factors affecting .
 
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCRCall Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
 
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETEINFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
 
Concrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptxConcrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptx
 
Artificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxArtificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptx
 
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile service
 
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfCCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
 
Heart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptxHeart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptx
 
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
 
Application of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptxApplication of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptx
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024
 
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
 
GDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentationGDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentation
 
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
UNIT III ANALOG ELECTRONICS (BASIC ELECTRONICS)
 
complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...
 
Effects of rheological properties on mixing
Effects of rheological properties on mixingEffects of rheological properties on mixing
Effects of rheological properties on mixing
 
Call Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call GirlsCall Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call Girls
 
DATA ANALYTICS PPT definition usage example
DATA ANALYTICS PPT definition usage exampleDATA ANALYTICS PPT definition usage example
DATA ANALYTICS PPT definition usage example
 

1.17 Thread in java.pptx

  • 1. Amity School of Engineering & Technology Threads
  • 2. Amity School of Engineering & Technology Multithreading in Java • Multithreading in java is a process of executing multiple threads simultaneously. • Thread is basically a lightweight sub-process, a smallest unit of processing. • Multiprocessing and multithreading, both are used to achieve multitasking. • But we use multithreading than multiprocessing because threads share a common memory area. They don't allocate separate memory area so saves memory, and context-switching between the threads takes less time than process. • Java Multithreading is mostly used in games, animation etc.
  • 3. Amity School of Engineering & Technology Advantages of Java Multithreading 1) It doesn't block the user because threads are independent and you can perform multiple operations at same time. 2) You can perform many operations together so it saves time. 3) Threads are independent so it doesn't affect other threads if exception occur in a single thread.
  • 4. Amity School of Engineering & Technology Multitasking Multitasking is a process of executing multiple tasks simultaneously. We use multitasking to utilize the CPU. Multitasking can be achieved by two ways: 1.Process-based Multitasking(Multiprocessing) 2.Thread-based Multitasking(Multithreading)
  • 5. Amity School of Engineering & Technology 1) Process-based Multitasking (Multiprocessing) 1. Each process have its own address in memory i.e. each process allocates separate memory area. 2. Process is heavyweight. 3. Cost of communication between the process is high. 4. Switching from one process to another require some time for saving and loading registers, memory maps, updating lists etc. 2) Thread-based Multitasking (Multithreading) 1. Threads share the same address space. 2. Thread is lightweight. 3. Cost of communication between the thread is low.
  • 6. Amity School of Engineering & Technology What is Thread in java A thread is a lightweight sub process, a smallest unit of processing. Threads are independent, if there occurs exception in one thread, it doesn't affect other threads. It shares a common memory area. As shown in the above figure, thread is executed inside the process. There is context-switching between the threads. There can be multiple processes inside the OS and one process can have multiple threads.
  • 7. Amity School of Engineering & Technology Per process items | Per thread items ---------------------------------|----------------- Address space | Program counter Global variables | Registers Open files | Stack Child processes | State Pending alarms | Signals and signal handlers | Accounting information |
  • 8. Amity School of Engineering & Technology Life cycle of a Thread (Thread States) A thread can be in one of the five states. According to sun, there is only 4 states in thread life cycle in java new, runnable, non- runnable and terminated. There is no running state. But for better understanding the threads, we are explaining it in the 5 states. The life cycle of the thread in java is controlled by JVM. The java thread states are as follows: 1 New 2 Runnable 3 Running 4 Non-Runnable (Blocked) 5 Terminated
  • 9. Amity School of Engineering & Technology
  • 10. Amity School of Engineering & Technology 1) New The thread is in new state if you create an instance of Thread class but before the invocation of start() method. 2) Runnable The thread is in runnable state after invocation of start() method, but the thread scheduler has not selected it to be the running thread. 3) Running The thread is in running state if the thread scheduler has selected it. 4) Non-Runnable (Blocked) This is the state when the thread is still alive, but is currently not eligible to run. 5) Terminated A thread is in terminated or dead state when its run() method exits.
  • 11. Amity School of Engineering & Technology How to create thread There are two ways to create a thread: 1 By extending Thread class 2 By implementing Runnable interface.
  • 12. Amity School of Engineering & Technology By extending thread class • The class should extend Java Thread class. • The class should override the run() method. • The functionality that is expected by the Thread to be executed is written in the run() method. • void start(): Creates a new thread and makes it runnable. • void run(): The new thread begins its life inside this method.
  • 13. Amity School of Engineering & Technology Java Thread Example by extending Thread class public class MyThread extends Thread { public void run(){ System.out.println("thread is running..."); } public static void main(String[] args) { MyThread obj = new MyThread(); obj.start(); }
  • 14. Amity School of Engineering & Technology By Implementing Runnable interface • The class should implement the Runnable interface • The class should implement the run() method in the Runnable interface • The functionality that is expected by the Thread to be executed is put in the run() method
  • 15. Amity School of Engineering & Technology Example: public class MyThread1 implements Runnable { public void run(){ System.out.println("thread is running.."); } public static void main(String[] args) { Thread t = new Thread(new MyThread1()); t.start(); }
  • 16. Amity School of Engineering & Technology Extends Thread class vs Implements Runnable Interface? • Extending the Thread class will make your class unable to extend other classes, because of the single inheritance feature in JAVA. • However, this will give you a simpler code structure. If you implement Runnable, you can gain better object-oriented design and consistency and also avoid the single inheritance problems. • If you just want to achieve basic functionality of a thread you can simply implement Runnable interface and override run() method. • But if you want to do something serious with thread object as it has other methods like suspend(), resume(), ..etc which are not available in Runnable interface then you may prefer to extend the Thread class.
  • 17. Amity School of Engineering & Technology Ending Thread A Thread ends due to the following reasons: • The thread ends when it comes when the run() method finishes its execution. • When the thread throws an Exception or Error that is not being caught in the program. • Java program completes or ends. • Another thread calls stop() methods.
  • 18. Amity School of Engineering & Technology Synchronization of Threads • In many cases concurrently running threads share data and two threads try to do operations on the same variables at the same time. This often results in corrupt data as two threads try to operate on the same data. • A popular solution is to provide some kind of lock primitive. Only one thread can acquire a particular lock at any particular time. This can be achieved by using a keyword “synchronized” . • By using the synchronize only one thread can access the method at a time and a second call will be blocked until the first call returns or wait() is called inside the synchronized method.
  • 19. Amity School of Engineering & Technology Thread Scheduler in Java Thread scheduler in java is the part of the JVM that decides which thread should run. There is no guarantee that which runnable thread will be chosen to run by the thread scheduler. Only one thread at a time can run in a single process. The thread scheduler mainly uses preemptive or time slicing scheduling to schedule the threads.
  • 20. Amity School of Engineering & Technology Difference between preemptive scheduling and time slicing Under preemptive scheduling, the highest priority task executes until it enters the waiting or dead states or a higher priority task comes into existence. Under time slicing, a task executes for a predefined slice of time and then reenters the pool of ready tasks. The scheduler then determines which task should execute next, based on priority and other factors.
  • 21. Amity School of Engineering & Technology Sleep method in java • The sleep() method of Thread class is used to sleep a thread for the specified amount of time. Syntax of sleep() method in java • The Thread class provides methods for sleeping a thread: public static void sleep(long miliseconds) throws InterruptedException
  • 22. Amity School of Engineering & Technology Example of sleep method in java class TestSleepMethod1 extends Thread{ public void run(){ for(int i=1;i<5;i++){ try { Thread.sleep(500); } catch(InterruptedException e) {System.out.println(e); } System.out.println(i); } } public static void main(String args[]){ TestSleepMethod1 t1=new TestSleepMethod1(); TestSleepMethod1 t2=new TestSleepMethod1(); t1.start(); t2.start(); } }
  • 23. Amity School of Engineering & Technology Can we start a thread twice public class TestThreadTwice1 extends Thread{ public void run(){ System.out.println("running..."); } public static void main(String args[]){ TestThreadTwice1 t1=new TestThreadTwice1(); t1.start(); t1.start(); } }
  • 24. Amity School of Engineering & Technology What if we call run() method directly instead start() method? class TestCallRun1 extends Thread{ public void run(){ System.out.println("running..."); } public static void main(String args[]){ TestCallRun1 t1=new TestCallRun1(); t1.run();//fine, but does not start a separate call stack } }
  • 25. Amity School of Engineering & Technology class TestCallRun2 extends Thread{ public void run(){ for(int i=1;i<5;i++){ try{Thread.sleep(500);}catch(InterruptedException e){System.out.println(e);} System.out.println(i); } } public static void main(String args[]){ TestCallRun2 t1=new TestCallRun2(); TestCallRun2 t2=new TestCallRun2(); t1.run(); t2.run(); } } Problem if you direct call run() method
  • 26. Amity School of Engineering & Technology The join() method • The join() method waits for a thread to die. In other words, it causes the currently running threads to stop executing until the thread it joins with completes its task. Syntax: • public void join() throws InterruptedException • public void join(long milliseconds) throws InterruptedException
  • 27. Amity School of Engineering & Technology Example of join() method class TestJoinMethod1 extends Thread{ public void run(){ for(int i=1;i<=5;i++){ try{ Thread.sleep(500); }catch(Exception e){System.out.println(e);} System.out.println(i); } } public static void main(String args[]){ TestJoinMethod1 t1=new TestJoinMethod1(); TestJoinMethod1 t2=new TestJoinMethod1(); TestJoinMethod1 t3=new TestJoinMethod1(); t1.start(); try{ t1.join(); }catch(Exception e){System.out.println(e);} t2.start(); t3.start(); } }
  • 28. Amity School of Engineering & Technology Example of join(long miliseconds) method class TestJoinMethod2 extends Thread{ public void run(){ for(int i=1;i<=5;i++){ try{ Thread.sleep(500); }catch(Exception e){System.out.println(e);} System.out.println(i); } } public static void main(String args[]){ TestJoinMethod2 t1=new TestJoinMethod2(); TestJoinMethod2 t2=new TestJoinMethod2(); TestJoinMethod2 t3=new TestJoinMethod2(); t1.start(); try{ t1.join(1500); }catch(Exception e){System.out.println(e);} t2.start(); t3.start(); } }
  • 29. Amity School of Engineering & Technology getName(),setName(String) and getId() method: class TestJoinMethod3 extends Thread{ public void run(){ System.out.println("running..."); } public static void main(String args[]){ TestJoinMethod3 t1=new TestJoinMethod3(); TestJoinMethod3 t2=new TestJoinMethod3(); System.out.println("Name of t1:"+t1.getName()); System.out.println("Name of t2:"+t2.getName()); System.out.println("id of t1:"+t1.getId()); t1.start(); t2.start(); t1.setName("Sonoo Jaiswal"); System.out.println("After changing name of t1:"+t1.getName()); } } public String getName() public void setName(String name) public long getId()
  • 30. Amity School of Engineering & Technology The currentThread() method: The currentThread() method returns a reference to the currently executing thread object. Syntax: public static Thread currentThread() class TestJoinMethod4 extends Thread{ public void run(){ System.out.println(Thread.currentThread().getName()); } } public static void main(String args[]){ TestJoinMethod4 t1=new TestJoinMethod4(); TestJoinMethod4 t2=new TestJoinMethod4(); t1.start(); t2.start(); } }
  • 31. Amity School of Engineering & Technology Naming Thread and Current Thread Naming Thread • The Thread class provides methods to change and get the name of a thread. By default, each thread has a name i.e. thread-0, thread-1 and so on. We can change the name of the thread by using setName() method. The syntax of setName() and getName() methods are given below: • public String getName(): is used to return the name of a thread. • public void setName(String name): is used to change the name of a thread.
  • 32. Amity School of Engineering & Technology class TestMultiNaming1 extends Thread{ public void run(){ System.out.println("running..."); } public static void main(String args[]){ TestMultiNaming1 t1=new TestMultiNaming1(); TestMultiNaming1 t2=new TestMultiNaming1(); System.out.println("Name of t1:"+t1.getName()); System.out.println("Name of t2:"+t2.getName()); t1.start(); t2.start(); t1.setName("Sonoo Jaiswal"); System.out.println("After changing name of t1:"+t1.getName()); } }
  • 33. Amity School of Engineering & Technology State of thread import java.lang.*; public class Threadstate implements Runnable { public void run() { // returns the state of this thread Thread.State state = Thread.currentThread().getState(); System.out.println(Thread.currentThread().getName()); System.out.println("state = " + state); } public static void main(String args[]) { Thread t = new Thread(new Threadstate()); // this will call run() function t.start(); } }
  • 34. Amity School of Engineering & Technology Priority of a Thread (Thread Priority): • Each thread have a priority. Priorities are represented by a number between 1 and 10. In most cases, thread schedular schedules the threads according to their priority (known as preemptive scheduling). But it is not guaranteed because it depends on JVM specification that which scheduling it chooses. 3 constants defiend in Thread class: • public static int MIN_PRIORITY • public static int NORM_PRIORITY • public static int MAX_PRIORITY Default priority of a thread is 5 (NORM_PRIORITY). The value of MIN_PRIORITY is 1 and the value of MAX_PRIORITY is 10.
  • 35. Amity School of Engineering & Technology class TestMultiPriority1 extends Thread{ public void run(){ System.out.println("running thread name is:"+Thread.currentThread().getName()); System.out.println("running thread priority is:"+Thread.currentThread().getPriority()); } public static void main(String args[]){ TestMultiPriority1 m1=new TestMultiPriority1(); TestMultiPriority1 m2=new TestMultiPriority1(); m1.setPriority(Thread.MIN_PRIORITY); m2.setPriority(Thread.MAX_PRIORITY); m1.start(); m2.start(); } }
  • 36. Amity School of Engineering & Technology Daemon Thread in Java Daemon thread in java is a service provider thread that provides services to the user thread. Its life depend on the mercy of user threads i.e. when all the user threads dies, JVM terminates this thread automatically. There are many java daemon threads running automatically e.g. gc, finalizer etc. You can see all the detail by typing the jconsole in the command prompt. The jconsole tool provides information about the loaded classes, memory usage, running threads etc. Points to remember for Daemon Thread in Java • It provides services to user threads for background supporting tasks. It has no role in life than to serve user threads. • Its life depends on user threads. • It is a low priority thread.
  • 37. Amity School of Engineering & Technology Methods for Java Daemon thread by Thread class The java.lang.Thread class provides two methods for java daemon thread. 1) public void setDaemon(boolean status) is used to mark the current thread as daemon thread or user thread. 2) public boolean isDaemon() is used to check that current is daemon.
  • 38. Amity School of Engineering & Technology public class TestDaemonThread1 extends Thread{ public void run(){ if(Thread.currentThread().isDaemon()){//checking for daemon thread System.out.println("daemon thread work"); } else{ System.out.println("user thread work"); } } public static void main(String[] args){ TestDaemonThread1 t1=new TestDaemonThread1();//creating thread TestDaemonThread1 t2=new TestDaemonThread1(); TestDaemonThread1 t3=new TestDaemonThread1(); t1.setDaemon(true);//now t1 is daemon thread t1.start();//starting threads t2.start(); t3.start(); } }
  • 39. Amity School of Engineering & Technology If we make a user thread as Daemon, it must not be started otherwise it will throw IllegalThreadStateException. class TestDaemonThread2 extends Thread{ public void run(){ System.out.println("Name: "+Thread.currentThread().getName()); System.out.println("Daemon: "+Thread.currentThread().isDaemon()); } public static void main(String[] args){ TestDaemonThread2 t1=new TestDaemonThread2(); TestDaemonThread2 t2=new TestDaemonThread2(); t1.start(); t1.setDaemon(true);//will throw exception here t2.start(); } }
  • 40. Amity School of Engineering & Technology Controling the main thread class CurrentThreadDemo { public static void main(String args[]) { Thread t = Thread.currentThread(); System.out.println("Current thread: " + t); // change the name of the thread t.setName("My Thread"); System.out.println("After name change: " + t); try { for(int n = 5; n > 0; n--) { System.out.println(n); Thread.sleep(1000); } } catch (InterruptedException e) { System.out.println("Main thread interrupted"); } } }
  • 41. Amity School of Engineering & Technology Thanks

Editor's Notes

  1. MULTITHREADING REALTIME EXAMPLES Background jobs like running application servers like Oracle application server, Web servers like Tomcat ctc which will come into action whenever a request comes. Performing some execution while I/O blocked. Joint Account holder having multiple ATM cards for same account and trying to perform operation same time . at time one operation is handled for account and then next one on updated data. Typing MS Word document while listening to music. Games are very good examples of threading. You can use multiple objects in games like cars, motor bikes, animals, people etc. All these objects are nothing but just threads that run your game application. Online bus/anything ticket booking : here many users trying to book available ticket at same time (ex : tatkal booking ) , here application needs to handle different threads (diff users request to server ) , if tickets sold out/not available then rest users will get correct response as not available to book .Multiple account holders accessing their accounts simultaneously on the server. When you insert a ATM card, it starts a thread for perform your operations. Servlets are multithreaded.
  2. Per process items | Per thread items ---------------------------------|----------------- Address space | Program counter Global variables | Registers Open files | Stack Child processes | State Pending alarms | Signals and signal handlers | Accounting information |
  3. Output:thread is running...
  4. If you are not extending the Thread class, your class object would not be treated as a thread object. So you need to explicitely create Thread class object. We are passing the object of your class that implements Runnable so that your class run() method may execute.
  5. As you know well that at a time only one thread is executed. If you sleep a thread for the specified time, the thread shedular picks up another thread and so on.
  6. No. After starting a thread, it can never be started again. If you does so, an IllegalThreadStateException is thrown. In such case, thread will run once but for second time, it will throw exception. Let's understand it by the example given below:
  7. Each thread starts in a separate call stack. Invoking the run() method from main thread, the run() method goes onto the current call stack rather than at the beginning of a new call stack. It will work..
  8. Output:1 2 3 4 5 1 2 3 4 5 there is no context-switching because here t1 and t2 will be treated as normal object not thread object.
  9. Output:1 2 3 4 5 1 1 2 2 3 3 4 4 5 5 when t1 completes its task then t2 and t3 starts executing.
  10. Output:1 2 3 1 4 1 2 5 2 3 3 4 4 5 5  when t1 is completes its task for 1500 miliseconds(3 times) then t2 and t3 starts executing.
  11. Output: Name of t1:Thread-0 Name of t2:Thread-1 id of t1 : 8 running... After changling name of t1:Sonoo Jaiswal running...
  12. Thread-1 Thread-0
  13. C:\Javap\Tpriority>java TestMultiPriority1 running thread name is:Thread-1 running thread name is:Thread-0 running? thread? priority is:10 running? thread? priority is:1 C:\Javap\Tpriority>java TestMultiPriority1 running thread name is:Thread-0 running thread name is:Thread-1 running? thread? priority is:1 running? thread? priority is:10
  14.  Finalize () is the method of Object class. This method is called just before an object is garbage collected. finalize () method overrides to dispose system resources, perform clean-up activities and minimize memory leaks.
  15. Output: daemon thread work ,user thread work ,user thread work
  16. Output: exception in thread main: java.lang.IllegalThreadStateException Exception in thread "main" java.lang.IllegalThreadStateException at java.base/java.lang.Thread.setDaemon(Thread.java:1403) at TestDaemonThread2.main(TestDaemonThread2.java:11) Name: Thread-0 Daemon: false T2 will not start
  17. Current thread: Thread[main,5,main] After name change: Thread[My Thread,5,main] 5 4 3 2 1