Click here to watch in Youtube :
https://www.youtube.com/watch?v=ZRnsX4yLHiE&list=PLmCsXDGbJHdh64JikgqsIpVoKSsKAxmxq
See also:
Subscribe to our YouTube channel for clear, beginner-friendly core Java and multi-threading tutorials!
👉 Click Here to SubscribeIn Java, multithreading allows concurrent execution of two or more parts of a program. During its execution, a thread undergoes various transitions from creation to termination. Understanding these life cycle states is essential for building efficient, high-performance Java applications.
When an instance of the Thread class is created using the new operator, the thread is in the New state. At this stage, it is not yet ready to run and has not been allocated system resources.
Invoking the start() method moves the thread into the Runnable state. This does not immediately run the thread, but makes it eligible for execution by the Thread Scheduler.
When the Thread Scheduler selects the runnable thread and allocates CPU time, it moves into the Running state and begins executing code inside its run() method.
A running thread can transition out of execution temporarily due to various reasons:
Thread.sleep() puts the thread to sleep for a specified duration before returning to the runnable state.wait() pauses the thread until another thread invokes notify() or notifyAll().Once the run() method finishes execution or terminates due to an unhandled exception, the thread reaches the Terminated state and cannot be restarted.
![]() |
| Java Tutorial : Java Threads (Life cycle of a Thread in Java | Java thread life cycle_V4) |
![]() |
| Java Tutorial : Java Threads (Life cycle of a Thread in Java | Java thread life cycle_V4) |
![]() |
| Java Tutorial : Java Threads (Life cycle of a Thread in Java | Java thread life cycle_V4) |
Subscribe to our channel for simplified tutorials on Java Multithreading and Core Concepts!
👉 Subscribe for More TutorialsEvery thread in Java follows a specific path from the moment it is initialized until it completes its execution and gets destroyed. Understanding these distinct states helps you manage concurrency effectively and avoid issues like deadlocks and race conditions.
A thread begins its life cycle in the New state when an instance of the Thread class is instantiated. At this stage, code execution has not started, and the thread is simply an object residing in memory.
When you call the start() method, the thread moves to the Runnable state. Once the operating system's thread scheduler allocates CPU execution time, the thread transitions into the Running state, executing the logic written inside the run() method.
While executing, a thread can temporarily pause its execution due to several conditions:
notify() or notifyAll().Thread.sleep(milliseconds).A thread reaches the Terminated (dead) state once its run() method execution completes naturally or if an uncaught exception halts it. A thread in this state cannot be re-started.
![]() |
| Java Tutorial : Java Threads (Life cycle of a Thread in Java | Java thread life cycle_V3) |
![]() |
| Java Tutorial : Java Threads (Life cycle of a Thread in Java | Java thread life cycle_V3) |
![]() |
| Java Tutorial : Java Threads (Life cycle of a Thread in Java | Java thread life cycle_V3) |
![]() |
| Java Tutorial : Java Threads (Life cycle of a Thread in Java | Java thread life cycle_V3) |
![]() |
| Java Tutorial : Java Threads (Life cycle of a Thread in Java | Java thread life cycle_V3) |
Subscribe to our channel for step-by-step Core Java tutorials and concurrency deep dives!
👉 Click Here to SubscribeMultithreading is a core capability in Java that enables programs to execute multiple operations simultaneously. A thread progresses through a defined series of states throughout its execution. Gaining a clear understanding of these states is vital for writing safe, performant concurrent code.
When a thread object is created using new MyThread(), it begins in the New state. It exists in memory but has not yet started running or interacting with the thread scheduler.
Calling the start() method transitions the thread into the Runnable state. In this state, the thread is ready to execute and waits in the pool for CPU resources allocated by the operating system.
When the thread scheduler picks the runnable thread, it enters the Running state and executes the code defined inside its run() method.
Threads can temporarily pause their active execution:
When the run() method execution completes or an uncaught exception terminates the thread, it moves into the Terminated state and cannot be run again.
![]() |
| Java Tutorial : Java Threads (Life cycle of a Thread in Java | Java thread life cycle_V2) |
![]() |
| Java Tutorial : Java Threads (Life cycle of a Thread in Java | Java thread life cycle_V2) |
![]() |
| Java Tutorial : Java Threads (Life cycle of a Thread in Java | Java thread life cycle_V2) |
![]() |
| Java Tutorial : Java Threads (Life cycle of a Thread in Java | Java thread life cycle_V2) |
![]() |
| Java Tutorial : Java Threads (Life cycle of a Thread in Java | Java thread life cycle_V2) |
![]() |
| Java Tutorial : Java Threads (Life cycle of a Thread in Java | Java thread life cycle_V2) |
🚀 Master Java & Boost Your Coding Skills!
Subscribe to Ram N Java for crystal-clear programming tutorials and step-by-step guides.
🔔 Subscribe NowIn Java multithreading, a thread always exists in any one of several defined states. From the moment it is created until it finishes execution, the life cycle of a thread is strictly controlled and managed by the Java Virtual Machine (JVM) and the thread scheduler.
A thread is in the New state when you create an instance of the Thread class (or subclass), but before the start() method is called. At this stage, the thread is not yet alive in the scheduling queue.
Once the start() method is invoked, the thread transitions to the Runnable state. It is ready for execution and waiting for the thread scheduler to pick it up.
When the thread scheduler selects the thread from the runnable pool, it enters the Running state and begins executing the code inside its run() method.
A thread is still alive but temporarily inactive and not eligible to run. It enters this state due to:
Thread.sleep()wait() or suspend()
Once the sleep time expires, I/O completes, the lock becomes available, or a notification is received (notify()/notifyAll()), the thread transitions back to the Runnable state.
A thread enters the Terminated state when its run() method finishes execution or if an unhandled exception terminates it. Once terminated, the thread cannot be restarted.
New → Runnable → Running → Blocked/Waiting → Runnable → Running → Terminated
![]() |
| Java Tutorial : Java Threads (Life cycle of a Thread in Java | Java thread life cycle_V1) |
![]() |
| Java Tutorial : Java Threads (Java Threading and multitasking - Real time example) |
![]() |
| Java Tutorial : Java Threads (Java Threading and multitasking - Real time example) |
![]() |
| Java Tutorial : Java Threads (Java Threading and multitasking - Real time example) |