12/10/25, 4:57 AM Java Multithreading Tutorial - GeeksforGeeks
Java Multithreading Tutorial
Last Updated : 03 Sep, 2025
Multithreading in Java is a feature that allows multiple tasks to run concurrently
within the same program. Instead of executing one task at a time, Java enables
parallel execution using lightweight threads. This makes applications more efficient,
faster and responsive in real-world scenarios like servers, games and chat
systems.
Key Features of Multithreading
A thread is the smallest unit of execution in Java.
Threads share the same memory space but run independently.
Java provides the Thread class and Runnable interface to create threads.
Multithreading ensures better CPU utilization by executing tasks simultaneously.
Synchronization is needed to prevent data inconsistency when threads share
resources.
Example: Suppose a restaurant kitchen where multiple chefs are working
simultaneously on different dishes. This setup ensures faster service and better
CPU (chef) utilization, just like threads in Java.
Example: Java Program to illustrate Creation and execution of a thread via start()
and run() method in Single inheritance
[Link] 1/5
12/10/25, 4:57 AM Java Multithreading Tutorial - GeeksforGeeks
class MyThread1 extends Thread {
public void run()
[Link]("Thread1 is running");
class MyThread2 extends Thread {
public void run()
[Link]("Thread2 is running");
Output
Thread1 is running
Thread2 is running
1. Introduction to Multithreading
Multithreading allows concurrent execution of two or more parts of a program for
maximum CPU usage. It improves application performance and responsiveness.
Introduction
Multiprocessing vs. Multithreading
2. Processes vs Threads
A process is an independent program in execution, while a thread is a lightweight
sub-process. Understanding their differences is key to mastering concurrency.
[Link] 2/5
12/10/25, 4:57 AM Java Multithreading Tutorial - GeeksforGeeks
Process vs. Thread
Java Thread Model
3. Thread Class and Runnable Interface
In Java, threads can be created either by extending the Thread class or by
implementing the Runnable interface. Both approaches have different use cases.
Thread Class
Runnable Interface
Create a Thread
4. Thread Lifecycle
A thread passes through different states like New, Runnable, Running, Waiting and
Terminated. The lifecycle is managed by the JVM and thread scheduler.
Lifecycle and States
Thread Scheduler
5. Thread Methods
Java provides built-in methods like start(), run(), sleep() and join() to manage
thread execution and control its behavior.
start() Method
suspend() Method
stop() Method
wait() Method
notify() Method
notifyAll() Method
sleep() Method
join() Method
6. Thread Priorities
Threads can be assigned priorities to influence scheduling decisions. Higher
priority threads are given preference by the thread scheduler.
Introduction
Daemon thread
[Link] 3/5
12/10/25, 4:57 AM Java Multithreading Tutorial - GeeksforGeeks
currentThread()
setName()
getName()
7. Synchronization
Synchronization ensures that multiple threads do not interfere with each other while
accessing shared resources. It helps prevent data inconsistency and race
conditions.
Introduction
Importance of Thread Synchronization
Synchronized methods & synchronized blocks
Static synchronization
object level lock
class level lock
8. Inter-thread Communication
Threads can communicate using methods like wait(), notify() and notifyAll(). This
enables coordination between multiple threads.
Introduction
wait()
notify()
notifyAll()
8. Deadlock
Deadlock occurs when two or more threads wait indefinitely for resources locked by
each other. Java provides techniques to avoid and resolve deadlocks.
Introduction
Deadlock example and prevention techniques
9. Thread Safety
Thread safety ensures correct program execution when multiple threads access
shared data. Techniques include synchronized, volatile and ThreadLocal.
Introduction
[Link] 4/5
12/10/25, 4:57 AM Java Multithreading Tutorial - GeeksforGeeks
Using Synchronization
Using Volatile Keyword
Using Atomic Variable
Using Final Keyword
10. Concurrency Utilities ([Link])
The concurrency package provides tools like Executors, Callable, Future and
Thread Pools. These simplify managing multithreaded applications.
Introduction
Executor Framework
Callable and Future
Thread Pools
ScheduledExecutorService
[Link] 5/5